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

时间:2015-05-13 11:39:36

标签: c file-io fopen file-writing

我查看互联网,试图找到一个逐行写入c文件的解决方案。我找到了将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);

非常感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:5)

这是因为每次在“w”模式下执行fprintf时,日志会被新内容覆盖,因为文件未在“追加”模式下打开,而是处于“写入”模式。

更好的方法是使用:

fopen("filename", "a");

答案 1 :(得分:3)

如果我理解你的问题,你可以有两种方法,

案例1 (多次打开/关闭,一次写入一个值)

您需要以追加模式打开文件以保留以前的内容。查看fopen()的{​​{3}} a附加模式。

案例2 (打开/关闭一次,一次性写下所有值)

你需要将fprintf()语句放在某种loop中才能打印所有元素,即 index item)值变为从0某些最大值。