C fprintf不工作

C fprintf不工作,c,io,C,Io,我正在测试fprintf()的用法,但它不起作用。当我第一次编写代码时,我忘了在fprintf()中添加\n,它成功了。但是,当我在“测试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]; f

我正在测试
fprintf()
的用法,但它不起作用。当我第一次编写代码时,我忘了在
fprintf()
中添加
\n
,它成功了。但是,当我在“测试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;
}
#包括
#包括
int main()
{
文件*f=fopen(“test.txt”、“r+”);
如果(f==NULL)返回0;
char-str[4][10];
对于(int a=0;a
对于打开以进行追加的文件(包含“+”号的文件),请打开
如果同时允许输入和输出操作,则流应该
在以下位置之间刷新(fflush)或重新定位(fseek、fsetpos、rewind)
在读操作之后的写操作或
读取操作未到达文件末尾,后跟
写操作

因此,添加以下内容:

fflush(f);
如果要附加到文件而不删除其以前的内容,请在
fprintf
之前,或者:

rewind(f);

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

请描述以前的工作方式以及现在的工作方式。请注意,您不应该在读取“for update”文件流和在没有
fseek()的情况下写入文件流之间切换
或等效代码,除非您在上次读取时遇到EOF。因此,在
fprintf()
之前应该有一个
fseek()
。(没有它,您会调用未定义的行为,这意味着任何事情都可能发生,包括“它工作,出于意外”。)谢谢,它解决了问题。我使用了rewind()它解决了这个问题,但是,fflush并没有解决这个问题,这取决于您是要附加到文件还是要覆盖它。rewind()将指针设置在文件中的第一个位置,所以我想覆盖就是您要寻找的。我将编辑答案。