我查看互联网,试图找到一个逐行写入c文件的解决方案。我找到了将fopen()
模式更改为w+
,wt
,wb
的解决方案,但这对我不起作用。我甚至读过在行尾添加\r
而不是\n
但是当我尝试写入文件时,唯一写入的就是最后一行。
FILE *log = NULL;
log = fopen(fileName, "w");
if (log == NULL)
{
printf("Error! can't open log file.");
return -1;
}
fprintf(log, "you bought %s\n", pro[item].name);
fclose(log);
非常感谢您的时间和帮助。
答案 0 :(得分:5)
这是因为每次在“w”模式下执行fprintf时,日志会被新内容覆盖,因为文件未在“追加”模式下打开,而是处于“写入”模式。
更好的方法是使用:
fopen("filename", "a");
答案 1 :(得分:3)
如果我理解你的问题,你可以有两种方法,
案例1 (多次打开/关闭,一次写入一个值)
您需要以追加模式打开文件以保留以前的内容。查看fopen()
的{{3}} a
或附加模式。
案例2 (打开/关闭一次,一次性写下所有值)
你需要将fprintf()
语句放在某种loop
中才能打印所有元素,即 index (item
)值变为从0
到某些最大值。