关于getchar函数滴问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:50:49
#include <iostream>
using namespace std;
int main()
{
char a,b;
a=getchar();
b=getchar();
putchar(a);
putchar(b);
cout << a << endl;
cout << b << endl;
}
为什么输入1个字符,输出两相同字符
输入两不同字符,也只输出两相同字符(第一个输入滴),且不换行
貌似第二个getchar函数没用,为什么呢?请详细解释下

这么说吧
如果你先输入一个字符,比如x
再空格
再输入一个字符,比如y
再回车
那么此时a='x',b=' '里面是个空格
所以putchar(a)输出'x',putchar(b)输出了空格,
cout<<a<<endl又输出了'x'并换行,cout<<b<<endl又输出一个空格又换了一行,
所以就出现了你所说的,输入两不同字符,输出了两相同字符且不换行。

如果你先输入一个字符,比如x
再回车
那么此时a='x',b='LF'这是表示换行的控制字符
所以putchar(a)输出'x',putchar(b)输出了换行,
cout<<a<<endl又输出了'x'并换行,cout<<b<<endl输出一个换行并且又换了一行,
因此你会发现程序最后结束时光标与最后一个'x'中间还隔着一行。

不知你明白了没有,getchar()是会接收任何输入流中的ASCII字符的,并不忽略空格换行等等这些控制字符。

你怎么输入的 getchar() 是会收进去 空格的

你输入 ab 看看 中间没有空格

楼上的说的没错,一般的话输入字符都要打回车什么的

getchar()读取键值速度很快,你可以在两个getchar()间加其他处理,或者改为scanf.