fgetc()返回值是int而不是char

• 本文约 135 字,阅读大致需要 1 分钟 | Development | #C standard

其实是个很简单的常识,居然搞了我半个小时……

fgetc()的返回值是int,因为这个值除了返回拿到的字符之外,还兼作错误标志。由于fgetc()允许文件中包含任意内容,所以只好增大返回值的宽度来表达。

因此,很显然,(ch = (char)fgetc(fp)) == EOF是不对的。