¿ Por que fgets me funciona así ?

Iniciado por snake_linux, 26 Agosto 2015, 12:16 PM

0 Miembros y 1 Visitante están viendo este tema.

snake_linux

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.

ivancea96

Las cadenas de caracteres terminan en un caracter nulo '\0'. Con lo que son 3 caracteres: "A\n\0"

snake_linux

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.