[C con Clase] añadir registros en archivos acceso directo
Joan Valls
joan.vallsv en gmail.com
Sab Mar 24 13:58:18 CET 2007
Hola, tengo un problema la funcion void insertarr_directo(venedors v)
deberia insertar un registro en una posicion concreta sacada de un hash,
alguien podria ayudarme y decirme como podria insertar registros.
El programa va de la siguiente forma: insertas los datos del cliente, al
insertar el dni la funcion void l_dni(char &l,int &dni), calcula su letra y
la guarda en el campo dni de la estructura, despues se guarda en el fichero
de la siguiente forma
De la posicion 0 a la 9 del fichero: aqui van los dni con letra A.
De la posicion 10 a la 19 del fichero: aqui van los dni con letra B.
De la posicion 20 a la 29 del fichero: aqui van los dni con letra C.
y asi hasta el final.
Pongo el codigo por si acaso....
typedef struct
{
int dni;
char letra_dni;
char nombre[50];
float vendas_acumuladas;
int activo;
}vendedor;
void insertar_directo(vendedor v)
{
int pos=0;
bool insertado=false;
int pos_arxiu=0;
vendedor v2;
FILE *f;
f=fopen("vendocasa.txt","r+");
pos=hash_letra(v.lletra_dni);
pos_archivo=pos+10;
fseek(f,pos*sizeof(v),SEEK_SET);
fread(&v2,sizeof(v2),1,f);
while(pos!=pos_archivo && insertado==false)
{
if(v2.activo==0)
{ pos=pos-1;
fseek(f,pos*sizeof(v),0);
fwrite(&v,sizeof(v),1,f);
insertado=true;
}
fread(&v2,sizeof(v2),1,f);
pos=pos+1;
}
fclose(f);
}
int hash_letra(char l)
{
char letras[] = "ABCDEFGHJKLMNPQRSTVWXYZ";
int pos=0;
int i;
for(i=0;i<23;i++)
{
if(l==letras[i])
{
pos=i*10;
}
}
return(pos);
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070324/25a9ff87/attachment.html>
Más información sobre la lista de distribución Cconclase