某些设备上的代码有什么问题?

时间:2015-11-29 13:31:56

标签: c linux io

有一个代码段:

#include<stdio.h>
int main(void){
    char c;
    while( (c=getchar()) != EOF){
        putchar(c);
    }
}

这些代码来自一本名为 Unix高级编程的书的 I / O 章节,它说代码在某些机器上效果不好,我试过代码在我的Mac中,它会运行良好,然后任何人都可以告诉我在运行上面的代码时会出现什么问题以及为什么会发生这种情况,谢谢!

更新: 代码来自I / O章节,所以我认为它与I / O操作有关。

1 个答案:

答案 0 :(得分:2)

  • getchar()的结果存储到char类型的变量是一种不好的做法,因为EOF不适合char类型。使用int很好。
  • 使用旧C中的return语句不返回主要功能中的任何值可能会混淆某些系统(如在线判断)并将代码视为运行时错误。你应该在函数结束时写return 0;