Autor Tema: Dudas con la función fgets (lenguajeC).  (Leído 1990 veces)

Pino06-01-2016

  • Sin experiencia
  • *
  • Mensajes: 7
    • Ver Perfil
Dudas con la función fgets (lenguajeC).
« en: 23 de Marzo 2016, 14:35 »
Hola gente.
Código: [Seleccionar]
fgets( word[i], MAX_COL , stdin );

if((p=strchr(word[i], '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
word[i][MAX_COL] = '\0';
}

En este trozo de código está mi gran duda, según lo que tengo leído es que si ingreso menos caracteres que  MAX_COL fgets los guarda desde el buffer de teclado en la variable indicada, en este caso word y también el carácter de nueva línea (\n) que se produce al apretar < Enter >, la primera duda, ¿es estrictamente necesario remplazar el carácter \n por \0? -
En el caso de ingresar más caracteres del establecido por MAX_COL fgets lee  MAX_COL – 1 y en la última casilla de memoria asignada a MAX_COL copia el carácter \n, de ser esto cierto la otra duda es:  ¿la sentencia else no se ejecuta nunca en este caso, o estoy equivocado?

Desde ya muchas gracias por el tiempo que le dediquen al tema,-

Saludos.
Daniel
« Última modificación: 25 de Marzo 2016, 23:11 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Dudas con la función fgets (lenguajeC).
« Respuesta #1 en: 25 de Marzo 2016, 23:12 »
Hola Pîno!

Me remito a este curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210

Funciones para recuperar datos desde archivos:

fgets (arg1, arg2, arg3)
   

Recupera el contenido del archivo en la variable arg1 hasta que encuentra o bien un carácter de fin de línea (\n) o bien hasta extraer arg2-1 caracteres siendo arg2 un valor especificado en la llamada de la función y arg3 el nombre interno del fichero.

Ejemplo: fgets (cadena1, n, nombreInternoFichero);

El \0 es un carácter especial que define el final de una cadena en C

Para entender bien el sentido del código que indicas habría que verlo completo, por ejemplo en el fragmento de código no se ve cómo está definido p.

Tampoco acabo de entender bien por qué word tiene en un caso un índice: word[ i ] y en otro caso dos índices: word[MAX_COL], habría que cer cómo está definido word

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".