getchar 函数使用注意事项

来源:互联网 发布:淘宝内部优惠券推广商 编辑:程序博客网 时间:2024/05/16 08:29
#include <stdio.h> void main(){char a,b;printf("enter  char:");a=getchar();printf("%c\n",a);printf("enter char:");b=getchar();printf("%c\n",b);}

按常理来说,当我们编译运行以后,在界面中输入一个字符,屏幕将打印出一个字符,再输入一个字符,屏幕也将打印出第二次输入的字符。
我们来看下实际结果:
______________________________
enter char:s
s
enter char:
Press any key to continue|
______________________________

当我们输入一个字符s时,直接就跳到了”Press any key to continue”,而在第二次”enter char”时我们并没有让输入要输入的字符。
这是为什么呢?来看下”getchar()”函数的使用方法。
使用”getchar()”函数输出字符时,实际的输入过程是:在键盘上输入字符并按下回车键后,字符和回车键被送入内存的缓存区(称为键盘缓存区)中,然后getchar()函数再从缓冲区中读一个字符,第1个”getchar()”函数将读入的字符赋值给字符型比变量a,而缓存区中的回车换行符被后面的”b=getchar()”语句读入而使b实际成为”空”字符。
所以我们应该将代码改一下,在”a=getchar()”后面添加一个”getchar()”。

#include <stdio.h> void main(){char a,b;printf("enter  char:");a=getchar();        getchar();printf("%c\n",a);printf("enter char:");b=getchar();printf("%c\n",b);}

第1个”getchar()”函数将读入的字符a,第2个”getchar()”函数用于”吃掉”输入缓冲区中的回车换行符,防止后面的”b=getchar()”读取缓存区的”回车换行符”。这样就不会出错了,看看运行结果。
______________________________
enter char:s
s
enter char:x
x
Press any key to continue|
______________________________

所以在使用getchar 函数时一定注意,否则总是会有输出错误的问题。

原创粉丝点击