Estoy utilizando struct para ello. No tengo inconvenientes cuando se cuantos datos quiero guardar. Pero me llego la curiosidad de como hacerlo sin un array.
No es el codigo completo pero creo que el fragmento serviria para lo que intendo hacer.
Primero declaro
Código:
#include <iostream.h> #include <conio.h> #include <string.h> #include <stdio.h> struct persona { char dni[9]; char nom[30]; float imp; }; void leerperso(); void cargperso(struct persona*); void main() { struct persona client[10]; cargperso(client);
Para escribir uno por uno utilizo esta funcion:
Código:
Como ven indica que escriba 10 veces como lo indica el corte de control de cargperso. Quiero modificar la variable del struct ("p/client") para que sea simple y no un array, el corte de control de cargperso terminaria al escribir "fin" y sacar ese contador.cargperso (struct persona*p) { int i=0; while(i<10) { cout<<"Cliente "<<i; cout<<"DNI "; cin>>p[i].dni; cout<<"Nombre "; cin>>p[i].nom; cout<<"Importe "; cout<<(p[i].imp=0); escribirperso(p); i++; } } void escribirperso(struct persona*p) { FILE *stream; stream=fopen("C:\\clie.dat","wb+"); fwrite(p, sizeof (struct persona), 10, stream); fclose(stream); }
No se como modificar el fwrite para que me lo guarda 1x1 no importa cuantos datos ponga.
De esta forma puedo leer los datos del struct (archivo) sin la necesidad de un FOR/conocimientos de cuantos pongo
Código:
Algún recomendacion para un novato???void leerperso() { FILE *stream; struct persona to; stream=fopen("C:\\clie.dat","rb"); while(fread(&to, sizeof to, 1,stream)==1) { cout<<"\nDNI "<<to.dni<<" Nombre "<<to.nom<<" Importe "<<to.imp<<endl; } fclose(stream); }
Desde ya gracias de antemano...