elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Guardar cada línea de un fichero en una estructura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar cada línea de un fichero en una estructura  (Leído 3,599 veces)
NathanD

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Guardar cada línea de un fichero en una estructura
« en: 5 Marzo 2013, 19:56 pm »

Hola, quiero hacer lo siguiente, pero no lo consigo.

En cada linea del fichero se supone hay un nombre, y cada uno de esos nombres quiero guardarlos en una estructura. Estaría definida así:

Código:
typedef struct{
nombre[20];
}ESTRUCTURA

Y en el main así:

Código:
ESTRUCTURA estruc[20]

Entonces, lo que yo quiero es guardar la primera línea del fichero en la primera posición, la segunda en la segunda, etc.

Para hacerlo, hago lo siguiente:
Código:
while( ! feof(fichero) )
    {
           fseek(fichero, pos_seek, SEEK_SET);
           fgets(estructura[i].nombre, 80, fichero);
           pos_seek += strlen(estructura[i].nombre);
           i++;
    }

Pero no funciona como debería.

Gracias de antemano.


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Guardar cada línea de un fichero en una estructura
« Respuesta #1 en: 5 Marzo 2013, 20:37 pm »

Creo que te bastaría, habiendo inicializado previamente i a cero, con:

Código
  1. while( ! feof(fichero) )
  2.    {
  3.           fgets(estructura[i].nombre, 20, fichero);
  4.           i++;
  5.    }


O incluso creo que así también furula "más mejor!:

Código
  1. while( fgets(estructura[i].nombre, 20, fichero)!= NULL;
  2.           i++;
  3.  
  4.  


Y si los quieres "ver":

Código
  1. for (j=0;j<i;j++)
  2.        puts(estructura[j].nombre);
  3.  


Saluditos!. ....


« Última modificación: 5 Marzo 2013, 20:53 pm por leosansan » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Guardar cada línea de un fichero en una estructura
« Respuesta #2 en: 5 Marzo 2013, 20:39 pm »

nombre tiene un máximo de 20 caracteres, no se por qué utilizas 80. Qué problema te da?
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Guardar cada línea de un fichero en una estructura
« Respuesta #3 en: 5 Marzo 2013, 20:59 pm »

nombre tiene un máximo de 20 caracteres, no se por qué utilizas 80. Qué problema te da?

Corregido en la reedición. Me llevo al huerto "su" código. Da gusto ver que hay quien está hasta en los detalles como ese. :rolleyes:

Saluditos!. ...
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Guardar cada línea de un fichero en una estructura
« Respuesta #4 en: 6 Marzo 2013, 01:53 am »

Creo que te bastaría, habiendo inicializado previamente i a cero, con:
Código
  1. while( ! feof(fichero) )
  2.    {
  3.           fgets(estructura[i].nombre, 20, fichero);
  4.           i++;
  5.    }
No se recomienda esa forma ya que se leería una linea de mas debido al uso de la función feof.

La segunda donde se utiliza el valor de retorno de fgets:
O incluso creo que así también furula "más mejor!:
Código
  1. while( fgets(estructura[i].nombre, 20, fichero)!= NULL;
  2.           i++;
  3.  
Es la correcta. Para seguirte pegando (por supuesto en buen plan): tienes un punto y coma cuando debería ser el paréntesis de cierre.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Guardar cada línea de un fichero en una estructura
« Respuesta #5 en: 6 Marzo 2013, 10:14 am »

...............................................................
La segunda donde se utiliza el valor de retorno de fgets:Es la correcta. Para seguirte pegando (por supuesto en buen plan): tienes un punto y coma cuando debería ser el paréntesis de cierre.


Pues se cierra:


Código
  1. while( fgets(estructura[i].nombre, 20, fichero)!= NULL)
  2.           i++;

Saluditos!. ...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines