
mostrar datos de un fichero
Publicado por Natalia (7 intervenciones) el 08/10/2014 17:44:35
Buenas tardes, tengo dos problemas con este programa.
es una estructura que permite el ingreso de distintos datos le puse como un bucle for que permita maximo que se ingrese hasta 3 veces, salvo que el año sea igual a 1000 y finalice. cuando lo cargo me permite ingresarlo 3 veces por pantalla, pero en el archivo se guarda solo el primero ingresado por teclado.
Luego una vez resuelto esto, tengo que preguntar al usuario que ingrese que numero de isbn desea mostrar por pantalla. y no entiendo como resolverlo. soy muy nueva en programacion, si alguien me pudiese ayudar, lo agredeceria mucho. ya que me esta trabando para poder avanzar con este trabajo que es bastante largo.
#include <stdio.h>
#include <stdlib.h>
typedef struct libro
{
int isbn;
char titulo[20];
char autor[20];
int anio;
char editorial[20];
};
int main()
{
struct libro milibro[3];
FILE *archivo;
int i;
archivo=fopen("archivolibro.txt","w");
if (archivo==NULL)
{
printf("No se pudo abrir el archivo.\n");
fclose(archivo);
}
else
for (i=0;i<3;i++)
{
puts("Ingrese ISBN:");
scanf("%d",&milibro[i].isbn);
getchar();
fprintf(archivo,"ISBN: %d\n",milibro[i].isbn);
puts("Ingrese Titulo:");
gets(milibro[i].titulo);
fprintf(archivo,"TITULO: %s\n",milibro[i].titulo);
puts("Ingrese Autor:");
gets(milibro[i].autor);
fprintf(archivo,"AUTOR: %s\n",milibro[i].autor);
puts("Ingrese Anio:");
scanf("%d",&milibro[i].anio);
getchar();
if (milibro[i].anio==1000)
{
fprintf(archivo,"ANIO: %d\n",milibro[i].anio);
puts("Carga finalizada\n");
exit(1);
}
else
{
puts("Ingrese Editorial:");
gets(milibro[i].editorial);
fprintf(archivo,"EDITORIAL: %s\n",milibro[i].editorial);
fclose(archivo);
}
}
/*aca no se si esta bien y no sesi luego si tengo que usar un feof para recorrer el archivo, lo intente hacer pero no salta error*/
printf("Ingrese el numero de ISBN que desea mostrar:\n");
fscanf(archivo,"%d",milibro[i].isbn);
archivo=fopen("archivolibro.txt","r");
if (archivo=NULL)
{
printf("Error al abrir el archivo\n");
fclose(archivo);
}
es una estructura que permite el ingreso de distintos datos le puse como un bucle for que permita maximo que se ingrese hasta 3 veces, salvo que el año sea igual a 1000 y finalice. cuando lo cargo me permite ingresarlo 3 veces por pantalla, pero en el archivo se guarda solo el primero ingresado por teclado.
Luego una vez resuelto esto, tengo que preguntar al usuario que ingrese que numero de isbn desea mostrar por pantalla. y no entiendo como resolverlo. soy muy nueva en programacion, si alguien me pudiese ayudar, lo agredeceria mucho. ya que me esta trabando para poder avanzar con este trabajo que es bastante largo.
#include <stdio.h>
#include <stdlib.h>
typedef struct libro
{
int isbn;
char titulo[20];
char autor[20];
int anio;
char editorial[20];
};
int main()
{
struct libro milibro[3];
FILE *archivo;
int i;
archivo=fopen("archivolibro.txt","w");
if (archivo==NULL)
{
printf("No se pudo abrir el archivo.\n");
fclose(archivo);
}
else
for (i=0;i<3;i++)
{
puts("Ingrese ISBN:");
scanf("%d",&milibro[i].isbn);
getchar();
fprintf(archivo,"ISBN: %d\n",milibro[i].isbn);
puts("Ingrese Titulo:");
gets(milibro[i].titulo);
fprintf(archivo,"TITULO: %s\n",milibro[i].titulo);
puts("Ingrese Autor:");
gets(milibro[i].autor);
fprintf(archivo,"AUTOR: %s\n",milibro[i].autor);
puts("Ingrese Anio:");
scanf("%d",&milibro[i].anio);
getchar();
if (milibro[i].anio==1000)
{
fprintf(archivo,"ANIO: %d\n",milibro[i].anio);
puts("Carga finalizada\n");
exit(1);
}
else
{
puts("Ingrese Editorial:");
gets(milibro[i].editorial);
fprintf(archivo,"EDITORIAL: %s\n",milibro[i].editorial);
fclose(archivo);
}
}
/*aca no se si esta bien y no sesi luego si tengo que usar un feof para recorrer el archivo, lo intente hacer pero no salta error*/
printf("Ingrese el numero de ISBN que desea mostrar:\n");
fscanf(archivo,"%d",milibro[i].isbn);
archivo=fopen("archivolibro.txt","r");
if (archivo=NULL)
{
printf("Error al abrir el archivo\n");
fclose(archivo);
}
Valora esta pregunta


0