Un probleme en c

Fermé
acer 32 - 6 mars 2010 à 13:47
Sandrov Messages postés 9 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 10 mars 2010 - 6 mars 2010 à 14:22
Bonjour, j un program a faire il s'agit de remplir les info des personne dan le fichier
struct date{
int jour;
int mois;
int annee;
};
struct personne
{
char nom[20];//nom du personne
char prenom[20];//prenom du personne
char sexe[10];//sexe du personne
char ident[10];//identifiant
char idE[20];//identifiant des enfants
date date_naiss ;// date de naissance
int n;//nbre d'enfants
}p;

FILE*fp;
personne*tab;
tab=(personne*)malloc(nb*sizeof(personne));// nb c le nbr de personne
fp=fopen("information.txt","w+");//remplir les info
for(i=0;i<nb;i++)
{ getchar();
printf("donner le nom de la personne\n");
gets(tab[i].nom);
printf("donner le prenom de la personne\n");
gets(tab[i].prenom);
printf("donner l'identifiant de la personne\n");
gets(tab[i].ident);
printf("donner le sexe de la personne\n");
gets(tab[i].sexe);

printf("entrer la date: jour mois annee \n");
scanf("%d",&tab[i].date_naiss.jour);
scanf("%d",&tab[i].date_naiss.mois);
scanf("%d",&tab[i].date_naiss.annee);
printf("donner le nombre d'enfants\n");
scanf("%d",&tab[i].n);

fwrite(tab+i,sizeof(struct personne),1,fp) ;
}

comment je peut trier la liste des personnes dans le fichier?
comment je peut ajouter l'identifiant des enfants ?
svp aider moi merçi d'avance

1 réponse

Sandrov Messages postés 9 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 10 mars 2010
6 mars 2010 à 14:22
Bonjour,
Pour le trie des personnes te faudrait un deuxième Fichier vide(fpp) ouvert en ecriture, et en lisant le premier Fichier plein de données(fp) ouvert en lecture ,et tu fait le trie par bulle, par exemple:
do
{
fread(&tab, sizeof(personne),1,fp);
if(tab[i].ident>tab[i+1].ident)
{
c+=1;
x=tab[i];
tab[i]=tab[i+1];
tab[i+1]=x;
fwrite(tab, sizeof(personne), fpp);

}
}while(c==0);


Et voilà c'est ce que je pense pour le trie, c'est pas sûre que ça soit totalement juste mais le concept c'est le même.
En ce qui concerne l'identifiant des enfants, tu fait une boucle avec un tableau pour la lecture déclaré idenf[10] par exemple ( à moin qu'il a plus de 10 enfants LOL :P ) :
for(j=0;j<n;j++)
{
scanf("%d",&tab[i].idenf[j]);
}

Je pense c'est tout pour mes propositions, j'espère que ça va t'aider.
Bon courage pour ton programme ;)

Amicalement Sandrov.
0