我对如何在写入文件时使用格式化字符串有点困惑,而且通常我都会猜测sprintf
。
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE *fp;
const char *exts = ".txt";
char *saveToPath;
sprintf(saveToPath, "/Path/To/My/File%s", exts);
fp = fopen(saveToPath, "w+");
fprintf(fp, "This is testing for fprintf...\n");
fputs("This is testing for fputs...\n", fp);
fclose(fp);
}
我在尝试格式化的saveToPath时得到一个
segmentation fault
,但是如果我使用一个纯字符串const char*
,比如“/Path/To/My/File.txt”,它就会工作。 最佳答案
为saveToPath变量分配内存
例如
char saveToPath[100];
另外,考虑使用snprintf来避免缓冲区溢出
例如
snprintf(saveToPath, 100 ,"/Path/To/My/File%s", exts);
这样您就可以确保不会为saveToPath写入超过100字节的内容
关于c - 写入文件时的C格式字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30566137/