为什么第二个while循环不运行?

时间:2021-03-13 11:16:00

标签: c

我有以下代码,但为什么第二个 while 循环没有运行?是否有任何更改以使其运行?

#include<stdio.h>
int main() {
    int a,b,c,d,e,f;
    while(scanf("%d,%d,%d",&a,&b,&c)==3){
        printf("ok\n");
    }
    while(scanf("%d,%d,%d",&d,&e,&f)==3){
        printf("OK\n");
    }
    return 0;
}

我的输入是

1,2,3
1,5,7,4,8,7
7,8,9,...

1 个答案:

答案 0 :(得分:1)

假设您在第一个 scanf() 中为 while 输入“1,5,7,4,8,7”。

scanf("%d,%d,%d", &a, &b, &c); 将 1 读入 a,将 5 读入 b,将 7 读入 c 并返回 3,将 ",4,8,7<ENTER>" 保留在输入缓冲区中.

在第二次循环中,scanf 找到逗号并返回 0,它终止了 while

紧接着,在第 2 个 while 中,第 2 个 scanf() 尝试将 ",4,8,7<ENTER>" 转换为整数,但未能立即返回 0 并终止 {{1} }.