nicolasblues86, aca te dejo una explicacion, espero que resuelva tu duda!
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'.
#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')
return 0;
}
Ejecucion del programa...
./Main
nicolasblues86
cadena: nico
stdin: lasblues86
Salu10.