Foro de elhacker.net

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:

Código
  1. printf("Elige un modo de juego\n");
  2. printf("0 -> Modo multijugador (contra un amigo)\n");
  3. printf("1 -> Modo un jugador (contra CPU)\n");
  4. char modo[3];
  5.  
  6. fgets(modo, 3, stdin);
  7. printf("Modo: %c\n", modo[2]);
  8. if (modo[0]=='0') printf("Has elegido modo multijugador\n");
  9. if (modo[0]=='1') printf("Has elegido modo un jugador\n");
  10.  

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
Las cadenas de caracteres terminan en un caracter nulo '\0'. Con lo que son 3 caracteres: "A\n\0"

Gracias, duda aclarada.