一个关于只读取一行首字符的C程序的问题

#include <stdio.h>
void main (){
    char ch;
    while ((ch=getchar())!='#'){
        if ('\n'==ch)
            continue;
        switch(ch){
            case 'a':
                printf ("a\n");
                break;
            case 'b':
                printf ("b\n");
                break;
            case 'c':
                printf ("c\n");
                break;
            case 'd':
                printf ("d\n");
                break;
            default:
                break;
        }
        while (getchar() != '\n')
            continue;
        printf ("Please type a/b/c/c/d\n");
    }
}

这段代码是在书上看到的,请问它是如何实现输入一行字符只读取首个字符。输入bcd,也只会打印b出来。

阅读 3.8k
1 个回答

第二个while循环里面的getchar()吃掉了后面的字符。

// ...
int ch2;
while ((ch2 = getchar()) != '\n') {
    printf("%c ", ch2);
    continue;
}
// ...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进