getchar只读一个字符

时间:2013-11-30 02:05:16

标签: c

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

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

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

3 个答案:

答案 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进行击键级别访问,则需要做更多工作,最好使用ncursestermios

等库