我有一个代码,我正在阅读两个字符。
char a;
char b;
a = getchar();
getchar();
b = getchar();
getchar();
printf("%c%c", a, b);
如果用户遵守规则,但是如果他一次输入多个字符,则代码效果很好。
例如,AA + B>一种
或它跳过第二个getchar并跳转到printf
aaa>aa
asdf>ad
qwertz>qe
如果用户同时输入多个字符或只读取第一个字符,如何让程序显示错误?
答案 0 :(得分:1)
#include <stdio.h>
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;
}
答案 1 :(得分:0)
第二个getchar
用于捕获newline
字符或输入的按键。它的ascii值为10.只需验证第二个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);
答案 2 :(得分:0)
getchar
宏从输入流中获取下一个可用字符。周期。
它不会提示,或等待用户或类似的东西。如果他们已经输入了一个字符并且尚未阅读,那么将使用该字符。
如果您想要从C进行击键级别访问,则需要做更多工作,最好使用ncurses
或termios