Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: snake_linux en 26 Agosto 2015, 12:16 PM

Título: ¿ Por que fgets me funciona así ?
Publicado por: snake_linux en 26 Agosto 2015, 12:16 PM
Hola a tod@s, resulta que intento obtener un caracter de stdin con fgets, pero para que funcione correctamente, tengo que crear un char [] de como mínimo 3 de tamaño, dejo el código:


printf("Elige un modo de juego\n");
printf("0 -> Modo multijugador (contra un amigo)\n");
printf("1 -> Modo un jugador (contra CPU)\n");
char modo[3];

fgets(modo, 3, stdin);
printf("Modo: %c\n", modo[2]);
if (modo[0]=='0') printf("Has elegido modo multijugador\n");
if (modo[0]=='1') printf("Has elegido modo un jugador\n");


Si le doy menos de 3 no llega a coger el '\n' por lo que lo deja en el buffer stdin, ¿ Por que si en teoría son dos caracteres solo ? (el caracter que quiero obtener y el '\n').

Gracias y saludos.
Título: Re: ¿ Por que fgets me funciona así ?
Publicado por: ivancea96 en 26 Agosto 2015, 19:11 PM
Las cadenas de caracteres terminan en un caracter nulo '\0'. Con lo que son 3 caracteres: "A\n\0"
Título: Re: ¿ Por que fgets me funciona así ?
Publicado por: snake_linux en 26 Agosto 2015, 19:30 PM
Cita de: ivancea96 en 26 Agosto 2015, 19:11 PM
Las cadenas de caracteres terminan en un caracter nulo '\0'. Con lo que son 3 caracteres: "A\n\0"

Gracias, duda aclarada.