Señores como andan? Antes que nada me presento, soy nuevo en el foro. Me llamo Pablo y estoy cursando ingenieria electronica en la universidad nacional de mi pais. Tengo un problema con la lectura del archivo en el siguiente codigo y nose que hacer:
(el programa guarda dos estructuras en un archivo, luego las levanta del archivo con fread y las mete en una lista):
Código c:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
typedef struct tren{
int atraso;
char x_retiro[6];
char x_cordoba[6];
char x_smartin[6];
char x_spenia[6];
char x_caseros[6];
char x_hurlingham[6];
char x_paz[6];
}TREN;
typedef struct nodo{
TREN var;
struct nodo *next;
}NODO;
int main(int argc, char * argv[])
{
//int numbytes;/*Contendr� el n�mero de bytes recibidos por read () */
TREN *var;
int cont=0;
int cant_byte = 0;
FILE* fd = NULL;
fd
= fopen("probando3.txt","ra+b");
while(cont < 2){
cont++;
var
= (TREN
*)malloc(sizeof(TREN
));
printf("Ingrese cantidad de minutos de atraso \n"); scanf("%d",& ( (var
)->atraso
) );
printf("ingrese horario de salida por itinerario\n");
printf("Ingrese horario de de pasada por ' Garita Cordoba ' separado por ' : ' \n");
printf("Ingrese horario de de pasada por ' Garita San Martin ' separado por ' : '\n");
printf("Ingrese horario de de pasada por ' Garita Saenz Peña ' separado por ' : '\n");
printf("Ingrese horario de de pasada por ' Garita Caseros ' separado por ' : ' \n");
printf("Ingrese horario de de pasada por ' Garita Hurlingham ' separado por ' : ' \n"); gets( (var
)->x_hurlingham
);
printf("Ingrese horario de de pasada por ' Garita Paz ' separado por ' : ' \n");
if( ( fwrite(var
,sizeof(TREN
),1,fd
) ) == -1 ) { printf("Error en la escritura del archivo"); }
var = NULL;
}
NODO *H= NULL;
NODO *aux;
NODO *primer;
if(H == NULL){
aux
= (NODO
*)malloc(sizeof(NODO
)); primer = aux;
if ( ( fread( &((aux
)->var
) ,sizeof(TREN
), 1 , fd
) ) == 0){ printf("Error en la lectura del archivo"); }
H = aux;
}
else{
aux
= (NODO
*)malloc(sizeof(NODO
)); fread( &((aux
)->var
) ,sizeof(TREN
), 1 , fd
); H->next = aux;
H = aux;
H->next = NULL;
}
}
return 0;
}
El error que recibo es el que esta ahi, fread devuelve 0 y no lee nada del archivo. El archivo lo escribe perfectamente. Estoy bajo linux y al archivo probando3.txt le di todos los permisos. Alguna idea? Saludos