C语言中的getchar和putchar

#include <stdio.h>

int main( )

{
      int c;

      c = getchar();

  while (c != EOF)

    {

          putchar();

            c= getchar(); 

  }

    return 0;

}

 

这里主要解释下为什么要用int型来接受getchar函数

很多时候,我们会写这样的两行代码:

char c;

c = getchar();

这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()的返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。

这里我们要注意下面几条:

1)  getchar读入时,如果不按回车符,所有输入会放入缓冲区,而不会被读入,所以执行c=getchar();时,我们输入12,如果不按回车键,1仍然不会读入

2)  最后按下的回车键,虽是用来告诉系统输入已结束,但同时也会作为一个字符放入缓冲区,所以我们输入12,按回车后,输入流其实有三个字符:1、2、回车;

3)  12是被当做两个字符1和2(注意,不是数字1、2),而不像%d时,作为一个数字12来看待;

4)  putchar()输出指定字符,不会在输出后自动换行,所以putchar(c);和putchar(d);之间要加putchar('\n');如果不加的话,会把c和d两个自动(1、2)输入到同一行。

5)getchar可以读入所有字符。

getchar()用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点

6)windows下如果想结束,就输入Ctrl+Z,表示EOF

posted @ 2017-04-21 16:30  颜小雀  阅读(607)  评论(0编辑  收藏  举报