许多初学者都习惯用 char 型变量接收 getchar、getc,fgetc 等函数的返回值,其实这么做是不对的,并且隐含着足以
致命的错误。getchar 等函数的返回值类型都是
int 型,当这些函数
读取出错或者
读完文件后,会返回
EOF。EOF 是一个宏,标准规定它的值必须是一个
int 型的负数常量。通常编译器都会把 EOF 定义为
-1。问题就出在这里,使用 char 型变量接收 getchar 等函数的返回值会导致对 EOF 的辨认出错,或者错把好的数据误认为是 EOF,或者把 EOF 误认为是好的数据。例如:
vvLv)x int c; /* 正确。应该使用 int 型变量接收 fgetc 的返回值 */BSD爱好者乐园
阅读(302) | 评论(0) | 转发(0) |