fprintf不工作

时间:2013-01-16 17:29:12

标签: c io

我正在测试fprintf()的使用情况,但它无效。当我第一次编写代码时,我忘记在\n内添加fprintf()并且它有效。但是,当我在“test 1 2”开头添加\n时,它停止了工作。

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    FILE* f = fopen("test.txt", "r+");
    if( f == NULL) return 0;

    char str[4][10];

    for(int a = 0; a <= 3; ++a)
    {
        fscanf(f, " %[^\t\n]s", str[a]);
        printf("%s\n", str[a]);
    }

    fprintf(f, "\ntest 1 2\n");

    fclose(f);
    system("pause");
    return 0;
}

并且我的test.txt包含(而不是\t\n我按下了标签并输入了文件,但我无法在此管理它。

  

a b \ t c d \ t e \ n   f g

1 个答案:

答案 0 :(得分:7)

  

对于打开附加的文件(包含“+”符号的文件),打开   允许输入和输出操作,流应该   刷新(fflush)或重新定位(fseek,fsetpos,倒带)之间   写入操作后跟读取操作或者   阅读操作没有到达文件结尾,然后是   写作。

Source

所以加上这个:

fflush(f);
如果你想在不删除以前内容的情况下附加到文件,请在fprintf之前

,或者:

rewind(f);

如果你想覆盖你的评论指出的内容。