nicolasblues86, aca te dejo una explicacion, espero que resuelva tu duda!
Ejecucion del programa...
Salu10.
Código [Seleccionar]
char *fgets( char *s, int tam, FILE *flujo );
fgets() lee como mucho uno menos de tam caracteres del flujo y los guarda en el búfer al que apunte s.
La lectura se para tras un EOF o una nueva-línea. Si se lee una nueva-línea, se guarda en el búfer.
Tras el último carácter en el búfer se guarda un '\0'.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int
main( void )
{
char *m = malloc( 5 * sizeof( char ) );
int ch;
m = fgets( m, 5, stdin );
printf( "cadena: %s\n stdin: ", m );
while ( ( ch = fgetc( stdin ) ) != EOF && ch != '\n')
printf( "%c", ch );
putchar( '\n' );
return 0;
}
Ejecucion del programa...
Código [Seleccionar]
./Main
nicolasblues86
cadena: nico
stdin: lasblues86
Salu10.