Tengo el siguiente código, pero ¿por qué no se ejecuta el segundo ciclo while? ¿Algún cambio para que funcione?

#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;
}

Mi entrada es

1,2,3
1,5,7,4,8,7
7,8,9,...
c
0
hrithik mahesh 13 mar. 2021 a las 14:16

1 respuesta

La mejor respuesta

Digamos que ingresa "1,5,7,4,8,7 " para el scanf() en el 1er while.

El scanf("%d,%d,%d", &a, &b, &c); lee 1 en a, 5 en b, 7 en c y devuelve 3 manteniendo ",4,8,7<ENTER>" en el búfer de entrada.

En la segunda vez a través del ciclo, scanf encuentra la coma y devuelve 0 que termina el while.

Inmediatamente después de eso, en el segundo while, el segundo scanf() intenta convertir ",4,8,7<ENTER>" en un número entero y falla al devolver 0 y terminar el while.

1
pmg 13 mar. 2021 a las 11:37