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.<br>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
<br><br>De la posicion 0 a la 9 del fichero: aqui van los dni con letra A.<br>De la posicion 10 a la 19 del fichero: aqui van los dni con letra B.<br>De la posicion 20 a la 29 del fichero: aqui van los dni con letra C.<br>
y asi hasta el final.<br><br>Pongo el codigo por si acaso....<br><br>typedef struct<br>{<br>    int dni;<br>    char letra_dni;<br>    char nombre[50];<br>    float vendas_acumuladas;<br>    int activo;<br>}vendedor;<br><br>
<br><br>void insertar_directo(vendedor v)<br>{<br>    int pos=0;<br>    bool insertado=false;<br>    int pos_arxiu=0;<br>    vendedor v2;<br>    FILE *f;<br>    f=fopen("vendocasa.txt","r+");<br>    pos=hash_letra(
v.lletra_dni);<br>    pos_archivo=pos+10;<br>    fseek(f,pos*sizeof(v),SEEK_SET);<br>    fread(&v2,sizeof(v2),1,f);<br>    while(pos!=pos_archivo && insertado==false)<br>    {<br>        if(v2.activo==0)<br>        {   pos=pos-1;
<br>            fseek(f,pos*sizeof(v),0);<br>            fwrite(&v,sizeof(v),1,f);<br>            insertado=true;<br>        }<br>        fread(&v2,sizeof(v2),1,f);<br>        pos=pos+1;<br>    }<br>    fclose(f);
<br>}<br><br><br><br>int hash_letra(char l)<br>{<br>    char letras[] = "ABCDEFGHJKLMNPQRSTVWXYZ";<br>    int pos=0;<br>    int i;<br>    for(i=0;i<23;i++)<br>    {<br>        if(l==letras[i])<br>        {<br>
            pos=i*10;<br>        }<br>    }<br>    return(pos);<br>}<br><br><br><br>