如何正确地将行附加到现有文件
How to properly append lines to already existing file
我浏览了互联网,试图找到一种将一行一行地写入文件的解决方案。我找到了解决方案,例如将 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);
非常感谢您的宝贵时间和帮助。
如果我对你的问题理解正确,你可以有两种方法,
案例一(多次打开/关闭,一次写入一个值)
您需要以追加模式打开文件以保留之前的内容。检查 fopen()
的 man page 是否为 a
或 append 模式。
Case 2(Opening / Closing一次,一口气写入所有值)
您需要将 fprintf()
语句放在某种 loop
中以打印所有元素,即 index (item
) 值从 0
到 某个最大值 值。
这是因为每次在 "w" 模式下执行 fprintf 时,日志都会被新内容覆盖,因为文件未在 'append' 模式下打开] 模式,但处于 'write' 模式。
更好的做法是使用:
fopen("filename", "a");
我浏览了互联网,试图找到一种将一行一行地写入文件的解决方案。我找到了解决方案,例如将 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);
非常感谢您的宝贵时间和帮助。
如果我对你的问题理解正确,你可以有两种方法,
案例一(多次打开/关闭,一次写入一个值)
您需要以追加模式打开文件以保留之前的内容。检查 fopen()
的 man page 是否为 a
或 append 模式。
Case 2(Opening / Closing一次,一口气写入所有值)
您需要将 fprintf()
语句放在某种 loop
中以打印所有元素,即 index (item
) 值从 0
到 某个最大值 值。
这是因为每次在 "w" 模式下执行 fprintf 时,日志都会被新内容覆盖,因为文件未在 'append' 模式下打开] 模式,但处于 'write' 模式。
更好的做法是使用:
fopen("filename", "a");