Demande d'aide

cs_mikak Messages postés 6 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 6 mai 2010 - 25 mai 2006 à 14:29
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 26 mai 2006 à 15:45
J'ai un probleme avec le MALLOC de ce programme,aidez moia trouver une soltion pour qu'on puisse lister par ordre alphabétique

void trie_affiche()
{ int nbre_etudiant,i=0,j,k;
  char *ci,*cj;
  etudiant *e,ed;
  clrscr();
  printf("\n\n ========== TRI ALPHABETIQUE DES ETUDIANTS =============");
  if(!fichier)
  { printf("\n\n\nPr‚cisez d'abord un fichier!");
    printf("\n\n\n\nTapez une touche pour revenir au menu principal");
    getch();
    return;
  }
  fseek(fichier,0,2);
nbre_etudiant=ftell(fichier)/sizeof(etudiant);
if(nbre_etudiant>eff)
 {
  printf("\n\n\nCe fichier contient un nombre d'etudiant superieur a \nl'effectif saisi dans le planning !!!");
  printf("\nChoisissez un autre fichier ou redonnez l'effectif!");
  printf("\n\n\nAppuyez sur une touche pour revenir au Menu principal.");
  getch();
  return;
 }


 // fseek(fichier,0,2);
 // nb_e=ftell(fichier)/sizeof(etudiant);
  e=(etudiant*)malloc(nbre_etudiant*sizeof(etudiant));
  rewind(fichier);
  while(i<nbre_etudiant)
  { fread(&e[i],sizeof(etudiant),1,fichier);
    i++;
  }
  for(i=0;i<nbre_etudiant;i++)
    for(j=i+1;j<nbre_etudiant;j++)
    { strcpy(ci,e[i].nom);
      strcat(ci,e[i].prenom); ///  C'EST A CE NIVEAU OU IL Y A PROBLEME
      strcpy(cj,e[j].nom);
      strcat(cj,e[j].prenom);
      if(strcmpi(ci,cj)>0)
      { copie(&ed,e[i]);
 copie(&e[i],e[j]);
 copie(&e[j],ed);
      }
    }
  j=0;  k=1;
  for(i=0;i<nbre_etudiant;i++)
  { if(j<nbs_u)
    { if(k==1)
      { printf("\n\n\n\tLes etudiants qui vont passer l'examen à la salle nø%d sont:\n",s[j].numsal);
 printf("\n\tNø\tCNE\t\tNom\t\tPrenom\n");
      }
      if(k<s[j].capsal)
 { printf("\n\t%d\t%s\t\t%s\t\t%s",i+1,e[i].cne,e[i].nom,e[i].prenom);
   k++;
 }
      else
      { printf("\n\t%d\t%s\t\t%s\t\t%s",i+1,e[i].cne,e[i].nom,e[i].prenom);
 k=1;
 j++;
 printf("\nÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
      }
    }
    else
    { printf("\n-------- on a depassé le nombre de salles utilis‚es -------\n");
      return;
    }
  }
  flushall();
  printf("\n\n Appuyer sur une touche pour retourner au menu principal");
  getch();
}

//fonction permettant de copier un champ d'etudiants dans un autre
void copie(etudiant *e1,etudiant e2)
{ strcpy(e1->nom,e2.nom);
  strcpy(e1->prenom,e2.prenom);
  strcpy(e1->cne,e2.cne);
}

4 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
25 mai 2006 à 14:57
Pourquoi poste tu ça sur Le Bar, discussion libre et pas sur le forum specifique ?

[;)] Flachy Joe [;)]
0
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
26 mai 2006 à 11:02
moi c'est les free qui me pose problème...
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
26 mai 2006 à 15:44
Tu n'alloue pas ci, c'est normal que ça ne fonctionne pas !!!

n=nombre de caractere
char ci[n] ou char* ci=(char*)malloc(sizeof(n)*256)

De plus, fait bien attention a liberer ta mémoire en fin de traitement

D@runia
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
26 mai 2006 à 15:45
Correction : ci=(char*)malloc(sizeof(char)*n)




D@runia
0
Rejoignez-nous