Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/11/2007, 18:22
INVINCIBLE
 
Fecha de Ingreso: noviembre-2007
Mensajes: 37
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Estructura con archivos

OE BROTHER......YO USO C++... Y ASI SERIA!!!

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

void crear();

struct libros {
char id[10];
char cantidade[3];
char autor[40];
char nomlibro[40];
char tema1[30];
char tema2[30];
}datos[100]; // estas declarando un maximo de 100 libros.....ya no es necesario, en un archivo

void crear()
{
F=fopen("c:ibros.txt","w"); // c:libros.txt - es al direccion en donde vas a guardar tu archivo - y "w" es el modo en k abres el archivo , en ete caso es en modo escritura - te crea un archvivo vacio!!!
if(F==NULL)
{
cout<<"ERROR AL CREAR ARCHIVO"; exit(1); }
else
{ cout<<"CREACION SATISFACTORIA"; }
}

FILE *L //archivo - variable global
libros l; // declaracion de la struct // variable global

int main()
{
char rpta[1];
strcpy(rpta,"S");
int i;
int j;
do
{
clrscr();
cout<<"Posicion "<<i<<endl;
cout << "Introduzca ID del libro: "; gets(l.id); //investiga lo de gets y cin
cout << "Introduzca Nombre del libro: "; gets(l.nomlibro);
cout << "Introduzca Autor: " ; gets(l.autor);
cout << "Introduzca Tema 1: "; gets(l.tema1);
cout << "Introduzca Tema 2: "; gets(l.tema2);
cout << "Introduzca Cantidad Existente: "; gets(l.cantidade);
cout << "iNGRESAR OTRO EJEMPLAR: "; gets(rpta);
i++; // ya no es necesario ya que una rchivo guarda dato por dato, en este caso te va a guardar los campos de la estructura una por una.....luego va a al otra estructura y te guarda esos campos....los que ingresas!!!
L=fopen("c:libros.txt","a"); // investiga los modos de lectura de un file
fwrite=(&l,sizeof(l),1,L);
if(ferror(L))
{ cout<<"Error de escritura en archivo LIBROS"<<endl;
exit(1);}
fclose(L); //cerrar el archivo!!! - ya k en cada itearacion se vuelva abrir.. y la estrcutura ocupa el lado contiguo en el file!!
ademas lo puedes visualizar en forma de un block de notas..........en la direcicon donde lo guardaste!!

} while (strcmp(rpta,"s")==0||strcmp(rpta,"S")==0);
getch();
}

}

listo...........y con eso lo consigues...pero busca info al respecto .. es un poko COMLICADO AL PRINCIPIO......PERO LUEGO ES SUPER PIXANGA!!!
ALAMOX!!!!!!!!!