如何正确地将行附加到现有文件

How to properly append lines to already existing file

我浏览了互联网,试图找到一种将一行一行地写入文件的解决方案。我找到了解决方案,例如将 fopen() 的模式更改为 w+wtwb,但它对我不起作用。我什至读到将 \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 是否为 aappend 模式。

Case 2(Opening / Closing一次,一口气写入所有值)

您需要将 fprintf() 语句放在某种 loop 中以打印所有元素,即 index (item) 值从 0 某个最大值 值。

这是因为每次在 "w" 模式下执行 fprintf 时,日志都会被新内容覆盖,因为文件未在 'append' 模式下打开] 模式,但处于 'write' 模式。

更好的做法是使用:

fopen("filename", "a");