Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2016, 19:13
Avatar de princk093
princk093
 
Fecha de Ingreso: febrero-2015
Ubicación: Venezuela
Mensajes: 28
Antigüedad: 9 años, 10 meses
Puntos: 7
Problema al leer archivo

Buenas a todos, estoy tratando de leer un archivo, y hacer que cada línea del archivo se guarde en un arreglo que es de un tipo estructura que dentro contiene un char *string.

El archivo tiene el siguiente contenido:
Cita:
44900388_expediente_Brayan Narvaez_28/10/96_20_0_1_
22907088_expediente_Brayan Dos_29/11/97_12_0_1_
81800198_expediente_Csn Tres_29/11/97_12_0_1_
81800198xx_expediente_Csn Tres_29/11/97_12_0_1_
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
#define false 0

typedef struct {
  char *str;
} array_s;

array_s *OpFile(char *route) {
  FILE * f = fopen(route,"r");
  array_s *vector = (array_s *) malloc(1);
  if(f != NULL ) {
    static char tmp[180];
    unsigned int bytes = 0, x = 0;
    while (0 == feof(f)) {
      bytes = bytes + sizeof(array_s);
      vector = (array_s *) realloc(vector,bytes);
      fgets(tmp,180,f);
      vector[x].str = tmp;
      x++;
    }
    vector[x - 1].str = "END";
  } else {
    free(vector);
    printf("ERROR: Abriendo archivo %s\n",route);
    exit(false);
  }
  fclose(f);

  printf("%s\n",vector[0].str);
  printf("%s\n",vector[1].str);
  printf("%s\n",vector[2].str);
  printf("%s\n",vector[3].str);
  printf("%s\n",vector[4].str);
  
  /*
    LA SALIDA DE ESOS PRINTF IMPRIME:
    81800198xx_expediente_Csn Tres_29/11/97_12_0_1_
    81800198xx_expediente_Csn Tres_29/11/97_12_0_1_
    81800198xx_expediente_Csn Tres_29/11/97_12_0_1_
    81800198xx_expediente_Csn Tres_29/11/97_12_0_1_
    END
    
    END se genera aqui  vector[x - 1].str = "END";
    y los demas en vector[x].str = tmp
    ¿Por qué siempre me sale el último y no salen los demás en el orden que los inserté?
    
  */

  return vector;
}

int main() {

array_s *v = OpFile("alumnos.txt");

}