08/06/2008, 10:25
|
| | Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 16 años, 7 meses Puntos: 0 | |
Respuesta: alta ordenada en ficheros weno
antetodo, gracias a mephisto por contestar.......
al final logre sacarlo
aqui dejo un ejemplo de lo que queria hacer:
#include<iostream>
#include<cstdlib>
struct r_pdatos{
int codigo;
char curso[4];
char nombre[20];
int edad;
char telefono[10];};
void pedir_datos(struct r_pdatos *,int);
using namespace std;
int main (int argc, char *argv[]){
struct r_pdatos pda;
FILE *f;
int tamany,trobat=0;
cout<<"--> DAR DE ALTA CODIGO AUTOMATICO <--"<<endl<<endl;
if ((f=fopen("pdatos.dat","ab+"))==NULL)
{ cout<<"Error no se puede dar de alta. El fichero no se abre";
exit(1);
}
fseek(f,0,SEEK_END);//calcular tamaño
tamany=ftell(f);
if(tamany==0)
pedir_datos(&pda,1);
else{
fseek(f,tamany-sizeof(pda),SEEK_SET);
fread(&pda,sizeof(pda),1,f);
fseek(f,0,SEEK_END); //o fseek(f,0,SEEK_SET);
pedir_datos(&pda,pda.codigo+1);
}
fwrite(&pda,sizeof(pda),1,f);
fclose(f);
system ("PAUSE");
}
void pedir_datos (struct r_pdatos *a, int c)
{
a->codigo=c;
cout<<"Introduce nombre: ";
cin.getline(a->nombre,20);
cout<<"Introduce curso: ";
cin.getline(a->curso,4);
cout<<"Introduce edad: ";
cin>>a->edad;
cin.get();
cout<<"Introduce telefono: ";
cin.getline(a->telefono,10);
}
esto te pondria el codigo automaticamente, por si a alguien mas le sirve
hasta otra |