tengo un problema con el uso de fgets. Se supone que el bucle debe leer una línea de máx. 19 caracteres, analice esta matriz de caracteres y luego espere la siguiente entrada. El problema es que si la línea ingresada supera los 19 caracteres, fgets llenará str con los caracteres restantes hasta que se ingrese Ctrl-D o nueva línea, iniciando así un nuevo ciclo sin nueva entrada. La entrada (stdin) debería vaciarse de alguna manera después de leer 19 caracteres, de modo que el ciclo pueda comenzar desde cero. Alguien tiene una solución para esto?
char str[20];
while((fgets(str, 20, stdin) != NULL)) {
puts(str); //monitoring str
if(str[0] == 'q') break;
}
Ejemplo en uso:
hola hola //user inputs 9 chars + newline
hola hola //puts writes
hoo hoo hoo hoo hooh //user inputs 20 chars + newline
hoo hoo hoo hoo hoo //puts writes
h //