如何在C中文件开始时FPRINTF字符串



我编写了此C代码段,将'n'单词读取到一个使用for loop的文件中。每次使用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!nn");
        fseek( fp, 0, SEEK_SET );
    }
    fclose(fp);

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

您基本上有两个选择:

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

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

您显然在覆盖现有单词。我知道这个问题是有一个带有一些数据的文件" file.txt",您将输入单词:
W1,W2,W3,.....,W_N-1,WN,应该写在文件中:
WN,W_N-1,W_N-2,........ W3,W2,W1,原始数据。这是一种回旋的方法:

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

那应该做到。如果我缺少一些东西,请指出。

您可以做一些这样的事情,这将在文件顶部添加新信息。因此,输出将是HWLLO 9,Hellow 8 ..... Hellow 0。

            FILE *f;
            for(i=0;i<10;i++)
            {
                f = fopen(cycleInfoFileName11,"at");
                fprintf(f,"hellow : %dn",i);
                printf("hellow : %dn",i);
            }

最新更新