#mac
#getchar()
我用visual studio for Mac打程式
遇到了問題就是關於第二個getchar完全不能輸入,請問該如何解決
你可以这样
#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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:这个问题是因为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();