我编写了此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);
}