我已经阅读了很多关于getchar()
其行为的问题,但我仍然不明白这个简单的代码..
while (scanf("%d", &z) != 1)
{
while (getchar() != '\n');
printf ("Try again: ");}
这段代码是为了验证字符。从我从这段代码中推断出来的是,如果我输入
Stackoverflow
然后整行被推入缓冲区,换行符 '\n' 也.. 然后getchar()
从缓冲区中读取每个字符并返回一个整数,清理缓冲区.. 在这种情况下,while 循环应该循环 12 次( Stackoverflow 中的字符),直到它到达 '\n' 字符.. 但实际上它只循环一次,输出是
Try again:
意味着它超出了循环并scanf
再次要求..它违背了我对循环的理解..也许我误解了循环..还有一个问题,如果getchar()
返回整数,那么它如何与'\ n'之类的字符进行比较?