fgetc()返回值是int而不是char
其实是个很简单的常识,居然搞了我半个小时……
fgetc()的返回值是int,因为这个值除了返回拿到的字符之外,还兼作错误标志。由于fgetc()允许文件中包含任意内容,所以只好增大返回值的宽度来表达。
因此,很显然,(ch = (char)fgetc(fp)) == EOF是不对的。
Archived: 1 Comment
antijp | February 18, 2009 5:12 PM
还好,这个错误犯的人不少。但是国内某谭的教材是用 while (!feof(fp)) 来弄的,幸好你没用那个写法……