gpt4 book ai didi

c - 输出文件用H符号填充,C

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:22 26 4
gpt4 key购买 nike

我正在尝试编写一个程序,在其中向一个文本文件添加单词。另外,我可以从这个文件中删除任何单词,并将没有这个单词的结果保存到另一个文本文件中。但是当我运行它时,我的第二个文本文件充满了 H 符号,而且它的大小可以超过 100 mb。这段代码有什么问题?在这里:

int main(void)
{
int wordNumbers;
int i;
char buf[512];
char word[128];

FILE *o_file = fopen("C:\\atest.txt", "a");
FILE *s_file = fopen("C:\\btest.txt", "w");

printf("please add an amount of words of the dictionary ");
scanf("%i", &wordNumbers);

for (i=0; i< wordNumbers; i++)
{ char word[100] = {0};
printf("add a word into the dictionary please\n");
scanf("%s", &word);
fprintf(o_file, "%s\n", word);
}

if(!o_file || !s_file) return -1;
printf("please write down the word you want to delete\n");
scanf("%s",&word);
do
{
fscanf(o_file, "%511s", buf);
if(!strcmp(buf, word))
continue;
fprintf(s_file, "%s\n", buf);
}
while(!feof(o_file));
fclose(o_file);
fclose(s_file);

}

最佳答案

您打印到文件 o_file 以插入您的字符串。然后,紧接着,您开始读取同一个文件。

读取和写入单个文件都使用相同的文件指针。因为在这些 write 之后文件指针总是在文件的末尾,所以下一个 read 应该会失败——但是因为你没有检查 的结果code>fscanf,您永远不会意识到这一点,并且您将未初始化数据写入新文件。

  1. 将新内容写入 o_file 后,使用 fseek (o_file, 0, SEEK_SET)rewind (o_file)< 将文件指针重置为开头
  2. 始终测试 fscanf(和 scanf)是否返回正确数量的已识别项目。返回值是有原因的。
  3. 另请阅读 Why is “while ( !feof (file) )” always wrong? .

关于c - 输出文件用H符号填充,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com