【发布时间】:2017-04-14 13:15:45
【问题描述】:
我得到的部分函数中有以下代码:
char ch;
ch = fgetc(fp);
if (ch == EOF)
return -1;
其中fp 是指向文件/流的指针,作为参数传递给函数。
但是,在检查了 fgetc()、getc() 和 getchar() 的用法后,它们似乎都返回 int 类型而不是 char 类型,因为 EOF 不适合用于char,因此通常
- 如果
getchar()返回int,为什么char c; c = getchar();是该函数的有效用法?在这种情况下,C 是否会自动将类型转换为 char,并且在getchar()被替换为getc(fp)或fgetc(fp)的情况下? - 当
fgetc()或其他两个函数返回EOF时,程序会发生什么?它会再次尝试像以前一样转换为 char 但然后失败了吗?ch中存储了什么(如果有的话)? - 如果 EOF 实际上不是一个字符,那么
ch == EOF如何进行有效比较,因为 EOF 不能用 char 变量表示?
【问题讨论】: