第二個getchar為什麼不能輸入

#mac
#getchar()
我用visual studio for Mac打程式
遇到了問題就是關於第二個getchar完全不能輸入,請問該如何解決

img

你可以这样

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char ch, ch2;
    printf("請輸入一個字元:"); 
    ch = getchar();
    getchar(); // 清除输入缓冲区中的回车符 \n
    printf("您輸入的字元是:%c\n", ch);

    printf("請輸入一個字元:");
    ch2 = getchar();
    printf("您輸入的字元是:%c\n", ch2);

    system("pause"); 

    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    这个问题是因为getchar()函数会读取输入缓冲区中的内容,而在多次调用getchar()时,输入缓冲区中可能还有残留的换行符。第一次调用getchar()时,会读取输入缓冲区中的第一个字符,并且会将换行符留在输入缓冲区中。而第二次调用getchar()时,会读取输入缓冲区中的换行符,因此无法输入实际字符。

    为了解决这个问题,我们可以在第一次调用getchar()后清除输入缓冲区的残留换行符。以下是一种可能的解决方案:

    #include <stdio.h>
    
    int main() {
        char c1, c2;
        printf("请输入第一个字符:");
        c1 = getchar(); // 第一次调用getchar()
    
        // 清除输入缓冲区中的残留换行符
        while (getchar() != '\n');
    
        printf("请输入第二个字符:");
        c2 = getchar(); // 第二次调用getchar()
        printf("你输入的字符是:%c 和 %c\n", c1, c2);
    
        return 0;
    }
    

    这里我们使用了一个while循环来读取输入缓冲区中的字符,直到遇到换行符为止。这样可以清除输入缓冲区中的残留换行符,确保第二次调用getchar()时可以正常输入字符。

    希望这个解决方案对你有帮助!如果你有任何其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

可能是getchar吃了你的回车符
你可以在getchar前面加上
fflush(stdin);
或者加上一个空的 getchar();

在第一次和第二次之间插入一句:getchar(); 如: ch = getchar(); getchar(); ch2 = getuchar();