Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - funzione che ordina un agenda in base al nome
Forum - C/C++ - funzione che ordina un agenda in base al nome

Avatar
domi90 (Normal User)
Rookie


Messaggi: 22
Iscritto: 07/05/2010

Segnala al moderatore
Postato alle 23:05
Venerdì, 28/05/2010
queste sono le strutture che uso:
struct rubrica{
       char nome[15];
       char cognome[15];
       char indirizzo[15];
       char telefono[15];};
struct rubrica rub;
struct rubrica agenda[10];

questa è la funzione che da problemi in quanto non ordina:
void ordina(void){
     int p,k,x, n, i=0, j,u;
     fp=fopen("Agenda","r+");
               for(;;){
                             n=fread(&agenda[i++],sizeof(struct rubrica),1,fp);
                            if(n==0)
                                     break;}
                                    
     u=i;                                
     p=i;
     do{k=0;
       for(j=0;j<i-1;j++){
      if(strcmp(agenda[j].nome,agenda[j+1].nome)>0){
                                                rub=agenda[j];agenda[j]=agenda[j+1];agenda[j+1]=rub;k=1;p=j+1;}
     i=p;}}
     while(k==1);
     fseek(fp,0L,0);
     for(x=0;x<u;x++){
     fwrite(&agenda[x++],sizeof(struct rubrica),1,fp);
     fseek(fp,x+1-sizeof(struct rubrica),0);}
     fclose(fp);
     return;}

compila normalmente ma non ordina il file

PM Quote