Foros del Web » Programación para mayores de 30 ;) » C/C++ »

no lee archivo

Estas en el tema de no lee archivo en el foro de C/C++ en Foros del Web. Hola gente. Primero que nada, soy nuevo en la comunidad, hace bastante tiempo que utilizo y ahora recien me registre. debo hacer una estructura con ...
  #1 (permalink)  
Antiguo 17/09/2015, 12:32
 
Fecha de Ingreso: septiembre-2015
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Exclamación no lee archivo

Hola gente.

Primero que nada, soy nuevo en la comunidad, hace bastante tiempo que utilizo y ahora recien me registre.

debo hacer una estructura con fichero, este es mi actual codigo:

#include <stdio.h>

typedef struct tventalibro{
char libro[30];
char autor[50];
int codigo;
int precio;

} ventalibro;

int main(int argc, char *argv[]) {
FILE *arch;
ventalibro est;


if ((arch = fopen("ventalibro.txt","r+")) == NULL){
printf("error archivo");
return 1;
}
while (!feof(arch)){
fread(&est, sizeof(ventalibro), 1, arch);
printf("libro:[%s]\n",est.libro);
printf("autor:[%s]\n",est.autor);
printf("codigo:[%i]\n",est.codigo);
printf("precio:[%i]\n",est.precio);

printf("\n------.\n");
}

fclose(arch);
return 0;
}

el asunto es que compila pero por pantalla no me arroja los datos que cree en mi txt.

en que esta mal mi codigo, consejos, todo es bien recibido.

gracias de antemano saludos
  #2 (permalink)  
Antiguo 17/09/2015, 23:45
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: no lee archivo

Buenos días.

y dónde has ubicado el archivo?

Al no indicar una ruta abosluta, el programa tratará de abrir un archivo como el que indicas en su carpeta de trabajo, que no tiene que coincidir necesariamente con el lugar donde se encuentra el programa.

Trata de poner la ruta absoluta del fichero.

Por otro lado, es conveniente evitar sentencias compuestas, al menos si las mismas no están correctamente anidadas. arch = fopen("ventalibro.txt","r+") == NULL esta línea implica una asignación y una comparación... y ninguna operación está agrupada por paréntesis. Esto puede llevar a situaciones en que las operaciones no se ejecuten en el orden que tu piensas, lo que puede provocar errores bastante difíciles de encontrar. Por ejemplo, ¿qué sucedería si el programa comparase el valor de fopen con NULL y después asignase el resultado de la comparación en arch?? al final arch valdría 1(si no se ha abierto el fichero) o 0(si se ha abierto) y, de valer 1 el programa entendería que el fichero se ha abierto correctamente... te puedes imaginar el cacao que esto provocaría.

Ah si, una nota final. Acostúmbrate a decorar el código con las etiquetas Highlight para mejorar su legibilidad.

Un saludo.
  #3 (permalink)  
Antiguo 19/09/2015, 20:50
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: no lee archivo

Además, el archivo tiene que haber sido creado con la misma estructura que despues quieres leerlo porque si no es asi no obtendras los datos de forma correcta.

Etiquetas: estructura, fichero, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:11.