【发布时间】:2012-09-06 04:04:56
【问题描述】:
我创建了一个文件并在 Unix 中将其命名为“file.txt”。我试图从我的 C 程序中读取文件内容。我无法接收 EOF 字符。 Unix不在文件创建时存储EOF字符?如果是这样,那么使用 C 从 Unix 创建的文件中读取 EOF 的替代方法是什么。
这是代码示例
int main(){
File *fp;
int nl,c;
nl =0;
fp = fopen("file.txt", "r");
while((c = fgetc(fp)) != EOF){
if (c=='\n')
nl++;
}
return 0;
}
如果我明确给出 CTRL + D,即使我使用 char c,也会检测到 EOF。
【问题讨论】:
-
另请注意:EOF 不是“存储在文件中”,它只是 I/O 函数告诉您它们已到达文件末尾的一种方式。最后没有存储魔术字节。
-
注意它应该是
FILE *fp;而不是File *fp;,并且在通过变量fp读取任何内容之前,您还应该检查文件是否已成功打开。