delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

17 Feb 2009

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

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

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

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


Archived: 1 Comment

antijp | February 18, 2009 5:12 PM

还好,这个错误犯的人不少。但是国内某谭的教材是用 while (!feof(fp)) 来弄的,幸好你没用那个写法……