【发布时间】:2015-01-10 21:13:26
【问题描述】:
代码:
#define maxWords 200
//finput is the file
char tempWord[maxWords];
(for i = 0; i < lineCounter(f); i++)
{
fgets(tempWord, maxWords, finput);
printf("%s", tempWord);
}
lineCounter 函数工作正常,并在文本文件中输出正确数量的行。但由于某种原因,它只打印了我不明白的 1500 行中的 150 行。我一直在尝试其他功能,例如 fscanf 和其他功能,但我仍然遇到同样的问题。它们都打印出文本,但不是整个文本文件。
即使我将i < 1500 作为 for 循环中的条件,我仍然有这个问题。有谁知道为什么?我也尝试过 while-loop 形式,但没有运气。
我也知道有很多与阅读文本文件相关的主题,我已经阅读了它们,但我仍然有这个问题..
【问题讨论】:
-
添加更多代码。 tempWord,maxWords 是如何定义的?
-
lineCounter函数实际上在做什么?要从头到尾读取文件,您应该检查fgets和feof(finput)的返回值。另请注意,使用getline而不是fgets可以极大地帮助简化和增强您的代码。 -
maxWords太小是候选问题。 -
很高兴看到
maxWords,但是一行中char的最大数量是多少?如果是 199 或更多,代码需要更大的缓冲区。 -
建议
while (fgets(tempWord, maxWords, finput) != NULL) printf("%s", tempWord);
标签: c output text-files