He estado teniendo muchos problemas tratando de encontrar la manera de usar scanf()
. Parece funcionar bien con números enteros, siendo bastante sencillo scanf("%d", &i)
.Analizando entrada con scanf en C
Donde me encuentro con problemas está utilizando scanf()
en bucles tratando de leer la entrada. Por ejemplo:
do {
printf("counter: %d: ", counter);
scanf("%c %c%d", &command, &prefix, &input);
} while (command != 'q');
Cuando entro en una entrada estructurada de forma válida como
c P101
, que parece bucle de nuevo antes de que me provocó. Esto parece suceder incluso con un solo:scanf("%c", &c)
en un ciclo while. Hará el ciclo dos veces antes de avisarme nuevamente. ¿Qué lo hace girar dos veces y cómo lo detengo?
Cuando ingreso menos cantidad de datos de entrada que programáticamente no tendrían otro carácter o número como
q
, presionar enter parece indicarme que ingrese más. ¿Cómo obtengoscanf()
para procesar entradas de caracteres individuales y dobles?
Muy buena explicación, sospeché que debe estar leyendo \ n, pero esto ciertamente complicó lo que pensé que era un simple análisis. Buscaré en fgets y sscanf(). – zxcv
Consideraría agregar un párrafo sobre verificar el valor de retorno de 'scanf()' para asegurarse de que obtuvo lo que esperaba. A menos que sepa de una pregunta anterior, es probable que se convierta en la pregunta y respuesta canónicas para este problema, pero el la respuesta canónica debe cubrir todos los puntos razonables y creo que el retorno de 'scanf()' es un punto razonable.Haz un comentario dirigido a mí cuando lo hagas; A continuación, eliminaré este comentario y marcaré su comentario para eliminarlo (o puede marcarlo como obsoleto, pero me gustaría saber si realizó los cambios). Gracias. –