Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: NOB2014 en 21 Enero 2017, 21:34 PM

Título: Si aprieto <enter> sin ningún ingreso fgets no me devuelve un puntero null en C.
Publicado por: NOB2014 en 21 Enero 2017, 21:34 PM
Hola, ¿cómo están?
Una consulta rapidita, alguien me puede decir que estoy haciendo mal, el puntero que devuelve fgets nunca es nulo, ¿por qué? .-

do{
ok=1;
printf("\n Ingresa el nombre del alumno [%d]......:", max+1);
if( fgets( (b+max)->nombre, 30, stdin ) == NULL ){
ok=0;
printf( "\n El dato es obligatorio..." );
printf( "\n Pulsa <Enter> para intentarlo nuevamente..." ); getchar();
}
}while(!ok);
ajustes( (b+max)->nombre );


Saludos.
Título: Re: Si aprieto <enter> sin ningún ingreso fgets no me devuelve un puntero null en C.
Publicado por: ivancea96 en 21 Enero 2017, 22:49 PM
Cuando pulsas enter, se envía un salto de línea al stream.
Título: Re: Si aprieto <enter> sin ningún ingreso fgets no me devuelve un puntero null en C.
Publicado por: NOB2014 en 21 Enero 2017, 22:55 PM
Hola, Ivan gracias por ocuparte. -
No me podrías dar alguna idea para que esta validación funcione. -
Título: Re: Si aprieto <enter> sin ningún ingreso fgets no me devuelve un puntero null en C.
Publicado por: ivancea96 en 21 Enero 2017, 23:01 PM
Código (cpp) [Seleccionar]
if( fgets( (b+max)->nombre, 30, stdin ) == NULL || (b+max)->nombre[0] == '\n'){

Prueba así.
Título: Re: Si aprieto <enter> sin ningún ingreso fgets no me devuelve un puntero null en C.
Publicado por: NOB2014 en 21 Enero 2017, 23:31 PM
Si genio, funciona a la perfección. -
Gracias.