C语言 为什么缓冲区中的字符不能进入while循环?



为什么没有"*"在输出?输入为:中的(回车键)

#include<stdio.h>
int main(void){
char ch;
while ((ch=getchar( ))== 'e')
printf(" * ");

return 0;
}

我想知道abcd'n'将存储在缓冲区中,当我点击回车键,和getchar()将不断读取它,直到捕获字符'e'并打印"*">

输入"abcde",没有"*"因为while循环从标准输入中逐字符读取,而读取的字符等于字符'e'。一旦输入与'e'不同的字符,循环就会中断。因为你的输入是"abcde"在while循环的第一次迭代中,变量ch等于'a',条件ch == 'e'等于false,之后循环中断。while循环和下面这个循环是一样的

while (1){
ch = getchar();
if (ch != 'e') break;
printf(" * ");
}

输入"abcd"getchar()返回的第一个值是什么,循环会发生什么?

最新更新