Foro de elhacker.net

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é? .-

Código
  1. do{
  2. ok=1;
  3. printf("\n Ingresa el nombre del alumno [%d]......:", max+1);
  4. if( fgets( (b+max)->nombre, 30, stdin ) == NULL ){
  5. ok=0;
  6. printf( "\n El dato es obligatorio..." );
  7. printf( "\n Pulsa <Enter> para intentarlo nuevamente..." ); getchar();
  8. }
  9. }while(!ok);
  10. 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
  1. 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.