【发布时间】:2013-04-27 06:08:25
【问题描述】:
我已经阅读了很多关于getchar() 及其行为的问题,但我仍然不明白这个简单的代码..
while (scanf("%d", &z) != 1)
{
while (getchar() != '\n');
printf ("Try again: ");}
这段代码是为了验证字符。从我从这段代码中推断出来的是,如果我输入了
Stackoverflow
然后将整行推送到缓冲区,换行符 '\n' 也..
然后getchar() 从缓冲区读取每个字符并返回一个整数,清理缓冲区。在这种情况下,while 循环应该循环 12 次(Stackoverflow 中的字符数),直到它到达 '\n' 字符。但是实际上它只是循环一次,输出是
Try again:
意味着它的循环外并再次要求scanf..这违背了我对循环的理解..也许我误解了循环..还有一个问题,如果getchar()返回整数,那么如何将它与像'\n'这样的字符?
【问题讨论】:
标签: c while-loop getchar