如何在C中的文件开头fprintf字符串?

时间:2014-02-06 12:52:45

标签: c file-io printf

我编写了这个C代码段,使用for循环将'n'个单词读入文件。应该在文件的开头插入一个新单词,我每次都使用fseek到达。

问题:只有最后扫描的单词才会被放入文件中,而之前的n-1个单词不会出现在文件中。没有显示错误,消息“完成!”正确打印'n'次。我做错了吗?

printf("No. OF words: ");
    scanf("%d",&n);

    for(i=0;i<n;i++)
    {
        printf("Enter word: ");
        scanf("%s",word);
        fprintf(fp,"%s \n",word);
        printf("done!\n\n");
        fseek( fp, 0, SEEK_SET );

    }

    fclose(fp);

3 个答案:

答案 0 :(得分:3)

无法在文件的开头追加。您当前的代码将覆盖文件的先前内容。

您基本上有两个选择:

将所有单词存储在内存中并按所需顺序打印到文件

将整个文件fseek读到开头,打印新单词,然后打印其余内容。

答案 1 :(得分:0)

你明显覆盖了现有的单词。我已经理解了有一个文件&#34; file.txt&#34;有一些数据,你会输入单词:
w1,w2,w3,.....,w_n-1,wn应该写在文件中,如:
wn,w_n-1,w_n-2,....... w3,w2,w1,原始数据。这是一个迂回的方法:

1.创建一个重复的文件&#34; dup1.txt&#34;与原文在同一个地方,并在那里添加新词 2.然后添加另一个文件,以相反的顺序复制新输入的单词。将此文件重命名为&#34; dup1.txt&#34;覆盖。 2.现在将原始数据复制到此文件并重命名此文件&#34; file.txt&#34;覆盖..

应该这样做。如果我错过了什么,请指出。

答案 2 :(得分:0)

你可以这样做,这会在你文件的顶部添加新信息。所以,输出将是hwllo 9,hellow 8 ..... hellow 0。

            FILE *f;

            for(i=0;i<10;i++)
            {

                f = fopen(cycleInfoFileName11,"at");
                fprintf(f,"hellow : %d\n",i);
                printf("hellow : %d\n",i);
            }