tengo este bloque de código (funciones omitido como la lógica es parte de una asignación de la preparación):C: de múltiples scanf, cuando entro en un valor para uno scanf se salta la segunda scanf
#include <stdio.h>
int main()
{
char c = 'q';
int size;
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("Length:");
scanf("%d",&size);
while(c!='q')
{
switch(c)
{
case 'l': line(size); break;
case 's': square(size); break;
case 't': triangle(size); break;
}
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("\nLength:");
scanf("%d",&size);
}
return 0;
}
El Los primeros dos Scanf funcionan genial, no hay problema una vez que entramos en el ciclo while, tengo un problema donde, cuando se supone que se te pide que ingreses un nuevo carácter de forma, en lugar de eso salta al printf
de Longitud y espera a recibir entrada de allí para un char, luego un decimal en la siguiente iteración del ciclo.
Preloop iteración:
Scanf: Forma. Funciona bien
Scanf: Longitud. No hay problema
Loop 1.
Scanf: Forma. Omite este
Scanf: longitud. Problema, este scanf se asigna a la forma char.
Loop 2
Scanf: Shape. Omite este
Scanf: longitud. Problema, este scanf se asigna al tamaño int ahora.
¿Por qué está haciendo esto?
Eso fue impresionante !! Gracias^_^ – noMAD
Acabas de salvarme la vida. –
El 'scanf ("% d "); la combinación getchar(); 'falla si el usuario ingresa accidentalmente un espacio (u otra basura) después del número. – ilkkachu