常见的getchar 与EOF的有关问题

常见的getchar 与EOF的问题

  代码中常有类似的如下的输入循环

    char  c;  

    while((c=getchar())!=EOF)....

    如果输入 字符+换行时,循环的代码会执行两次,主要是换行键作为字符存到了缓存队列中,第一次c为输入的值,第二次c为换行符 ,可以通过fflush(stdin);清除

    EOF在linux下为ctrl+D window下为ctrl+z

    这种循环写法虽然比较标准,但是感觉有点笨重

    一般情况下可以改写如下:

    char c;

    while((c=getchar())!='\n').....

 

    顺便说下C语言中单引号和双引号的区别,单引号主要表示字符,双引号主要表示字符串

    ‘\n'表示一个字符,也就是换行,”\n“,包括 '\n' 和'\0'  ,'\0' 为字符串的结束符,一般系统自动添加