getchar只读一个字符

我有一个代码,我用两个字符阅读。

char a; char b; a = getchar(); getchar(); b = getchar(); getchar(); printf("%c%c", a, b); 

如果用户遵守规则,则代码很有效,但如果他一次输入多个字符,结果就会变得奇怪。

例如aa + b> a

或者它跳过第二个getchar并跳转到printf

 aaa>aa asdf>ad qwertz>qe 

如果用户同时输入多个字符或只读取第一个字符,如何使程序显示错误?

 #include  int inputFirstOne(void){ int ch; ch = getchar(); while('\n'!=getchar()); return ch; } int main(){ char a, b; a = inputFirstOne(); b = inputFirstOne(); printf("%c%c\n", a, b); return 0; } 

第二个getchar用于捕获newline字符或enter的按键。它的ascii值为10.只需validation第二个getchar是否读取换行符。

 char a; char b,ch; a = getchar(); ch = getchar(); if(ch!=10)//newline //error b = getchar(); ch = getchar(); if(ch!=10)//newline //error printf("%c%c", a, b); 

getchar宏从输入流中获取下一个可用字符。 期。

它不会提示,或等待用户或类似的东西。 如果他们已经输入了一个字符并且尚未阅读,那么将使用该字符。

如果你想要从C进行击键级访问,你需要做更多的工作,最好是使用像ncursestermios这样的库