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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Como pasar los datos de un archivo a una estructura ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como pasar los datos de un archivo a una estructura ?  (Leído 2,719 veces)
maicol_962016

Desconectado Desconectado

Mensajes: 7


Ver Perfil
¿Como pasar los datos de un archivo a una estructura ?
« en: 13 Marzo 2016, 04:06 am »

//estuve intentando pero no logre que funcionara me podrían ayudar en como pasar los datos que se encuentren en un archivo a una estructura aqui esta lo que intente

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<conio.h>
typedef struct{
   char nombre[100];
   char apellido[100];
}datos;
int main(){
   FILE *fichero=fopen("archivo.txt","r");
   datos dat;
   int lugar=0,con=0,posicion=0,repartidor=1;
   char *cad;
   
   while(!feof(fichero)){
      fgetc(fichero);
      con++;
   }
   cad=(char*)malloc(con);
   fseek(fichero,0,SEEK_SET);
   fgets(cad,con,fichero);
   printf("archivo leido  ");
   fclose(fichero);

while(cad[posicion]!= '/')
   {
      if(cad[posicion]!=32)
      {
           switch(repartidor)
          {
                case 1:
                 dat.nombre[lugar]=cad[posicion];
                 printf("%c",dat.nombre[lugar]);//aqui yo imprimo lo que supuestamente se esta almacenando para comprobar si almacena
                  break;
                case 2:
                 dat.apellido[lugar]=cad[posicion];
                 printf("%c",dat.apellido[lugar]);//aqui yo imprimo lo que supuestamente se esta almacenando para comprobar si almacena
                 break;
              }
      }*/
      for(int i=0;i<5;i++){
         dat.nombre='a'+i;
      }
      
      else
      {
          lugar=0;
          repartidor++;
      }
      posicion++;
      lugar++;
      
      
   }
   
   printf("\n");
    printf("%s\n",dat.nombre);//aqui lo vuelvo a imprimir y me imprime basura
   printf("%s\n",dat.apellido);
   return 0;
   }


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: ¿Como pasar los datos de un archivo a una estructura ?
« Respuesta #1 en: 14 Marzo 2016, 03:26 am »

El código directamente no compilaría. Primero, hay un 'else' que no está acompañado de su if, además, has cerrado los comentarios de múltiples líneas sin abrirlo.

Sinceramente, no sé si has analizado tu propio código.
Código
  1. for(int i=0;i<5;i++) {
  2.        dat.nombre='a'+i;
  3. }

En esa parte del código estás cambiando la dirección de memoria a la que apunta dat.nombre. Eso hace inválido lo que hayas almacenado en la cadena dat.nombre.

Para hacer lo que quieres hacer es mejor usar fscanf, puesto que esta función te detecta los espacios por ti.

Siento decirte esto, pero el código es un poquito desastre. Analízalo para intentar buscar una solución mejor a lo que quieres hacer.


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
maicol_962016

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: ¿Como pasar los datos de un archivo a una estructura ?
« Respuesta #2 en: 14 Marzo 2016, 22:06 pm »

si ese for no esta correcto lo puse como comentario y se me olvido de quitarlo de ahi lo demas si va.
en si lo que quiero hacer es pasar el contenido del fichero a una estructura llamada
datos .
« Última modificación: 14 Marzo 2016, 22:10 pm por maicol_962016 » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: ¿Como pasar los datos de un archivo a una estructura ?
« Respuesta #3 en: 15 Marzo 2016, 03:19 am »

Lo único que tendrías que hacer es añadir un carácter de fin de cadena a las cadenas del nombre y del apellido. Por ejemplo, tenemos siguiente cadena:

Código
  1. char cadena[4] = {'H', 'o', 'l', 'a'};

En esta cadena no hay un carácter que delimite su fin (te invito a que pienses en lo contrario, pero ya te digo que no hay nada que indique el final de la cadena en el programa). Para ponerle un fin a esa cadena, tienes que añadir el carácter nulo donde sea el final de la cadena:

Código
  1. char cadena[5] = {'H', 'o', 'l', 'a', '\0'};

Como ves, ahora la cadena es una unidad más larga porque tiene un carácter que la delimita. Ese carácter, llamado carácter nulo, se escribe como has visto ( '\0' ). Equivale a un entero 0.

PISTA: ¡¡¡Puedes añadir el carácter nulo en el 'else'!!!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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