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");
}