fgets espera '\ n' antes de recibir la entrada en el búfer [duplicado]
Estoy tratando de usar fgets de stdin y comienza a recopilar datos de la pantalla solo después de escribir '\ n'. hasta que el '\ n' esté atascado.
nota: no tengo ningún escaneo en mi código
la parte relevante del código:
while (reconnect_flag)
{
printf("%s\n", RECONNECT_MENU);
char Input[2] = "";
fgets(Input, 2, stdin);
}
Respuestas
Dado que fgets()está destinado a leer una línea de datos, hasta la primera línea nueva (o EOF) incluida, se comporta como se esperaba.
Además, a menos que haga algo elegante con la configuración del terminal, el terminal no enviará el contenido de la línea de datos a los programas que leen desde el terminal hasta que se ingrese una nueva línea. Consulte Entrada de terminal canónica frente a no canónica para obtener más información desde una perspectiva POSIX (Unix). Por lo tanto, intentar leer un carácter a través de fgets(Input, 2, stdin)
no recibirá ninguna entrada hasta que se ingrese una nueva línea.
Debe trabajar con API específicas de la plataforma si desea recibir información tan pronto como esté disponible. Eso significa que lo que haga en Windows será diferente de lo que hace en los sistemas basados en POSIX: los distintos tipos de Unix, incluido Linux. Incluso en sistemas basados en POSIX, puede usar la curses
biblioteca o puede usar llamadas al sistema de nivel inferior, y hay varias formas de hacerlo.