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;
}
转载于:https://blog.51cto.com/yw1994/1382823