C++中使用getchar函数时,使用时如果不注意一些小细节,很容易造成输出结果与预想的不一致。这里来分析下出错的原因。
首先来看一段代码

#include <stdio.h>
 
void main()
{
	char a,b;
	printf("enter  char:");
	a=getchar();
	printf("%cn",a);
	printf("enter char:");
	b=getchar();
	printf("%cn",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("%cn",a);
	printf("enter char:");
	b=getchar();
	printf("%cn",b);
}

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

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

One Thought on “getchar 函数使用注意事项:C++”

发表评论

电子邮件地址不会被公开。 必填项已用*标注