getchar()从控制台读取一个字符,并回显。当程序调用getchar()时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不只一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。



例子:显示回文数-----

#include<stdio.h>

int main(void)

{

       char a[10];

       int i,n;

       printf("input letter numbers:");//在这里你会输入回车符,回车符刚好为a[0],这一点很容易出错。

       scanf("%d",&n);

       if(n>=10||n<=0)

               printf("input error\n");

               else

       {

               printf("input all letter:");

               for(i=0;i<=n;i++)

                       a[i]=getchar();


               for(i=0;i<=n;i++)  //用来检测你输入的数据的,结果(隐形)你把回车换行符也放进了a数组里。

                       printf("%c",a[i]);


               for(i=0;i<n;i++)     //因为a[0]为回车符,所以我们必须覆盖掉。很多人会忽略这一点

                       a[i] = a[i + 1];

              for(i=0;i<n;i++)  

               {      

                    if(a[i]!=a[n-i-1])

                       {

                               printf("NOT\n");break;

                       }

                       if(i==n/2)  

                       {

                               printf("YES\n");break;

                       }                                              

               }

       }

       return 0;

}

wKioL1MwE5mxY2OuAAKTtzqkwBU874.jpg

wKiom1MwE8Gho13iAAJzVjKBnEM143.jpg