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