Bonjours a tous, voila j´ai plein d´erreur qui s´affiche quant j´ecrit le programme suivant avec des structure.
struct individu{
char nom[20];
char ville[10];
char prenom[10];
int age;
};
struct individu tab[50];
strcpy(tab[0].nom,"henri");
strcpy(tab[0].ville,"paris");
strcpy(tab[0].prenom,"martin");
tab[0].age=40;
strcpy(tab[1].nom,"chevalier");
strcpy(tab[1].ville,"marseille");
strcpy(tab[1].prenom,"mark");
tab[1].age=33;
strcpy(tab[2].nom,"barock");
strcpy(tab[2].ville,"bordeau");
strcpy(tab[2].prenom,"marie");
tab[2].age=19;
mais je ne voit pas trop ou se situe l´erreur comme je suis débutant en structure j´aime rai savoir si quelqu´un voit une errreur dans mon programme merci d´avance ( bien sur y a aussi un main dans mon prgramme).
struct individu tab[50];
tu doit écrire juste :
individu tab[50];
ou alors tu fait :
struct individu{
char nom[20];
char ville[10];
char prenom[10];
int age;
}tab[50];
Non dnob, c´est correct ça il me semble. En C pur tu dois remettre le struct.
Essaie de mettre des parenthèses autour de tab[0] peut-être...
Vérifie également que tu as bien inclus string.h.
Et puis sinon donne nous les erreurs que ça génère!
ou peut-être :
tab[2]->truc
remplacer les point par des ->
Non plus, puisque tab[0] n´est pas un pointeur...
ok je vous met tout le programme et les errueur généré
le programme:
struct individu{
char nom[20];
char ville[10];
char prenom[10];
int age;
};
struct individu tab[50];
strcpy(tab[0].nom,"henri");
strcpy(tab[0].ville,"paris");
strcpy(tab[0].prenom,"martin");
tab[0].age=40;
strcpy(tab[1].nom,"chevalier");
strcpy(tab[1].ville,"marseille");
strcpy(tab[1].prenom,"mark");
tab[1].age=33;
strcpy(tab[2].nom,"barock");
strcpy(tab[2].ville,"bordeau");
strcpy(tab[2].prenom,"marie");
tab[2].age=19;
int main(){
int i,j,k,l;
for(i=0;i<4;i++){
printf("%s\n",tab[i].nom);
for(j=0;j<4;j++)
printf("%s\n",tab[i].ville);
for(k=0;k<4;k++)
printf("%s\n",tab[i].prenom);
for(l=0;l<4;l++)
printf("%d\n",tab[i].age);
}
return 0;
}
les errreurs généré:
exo1.c: At top level:
exo1.c:17: error: parse error before ´[´ token
exo1.c:17: warning: data definition has no type or storage class
exo1.c:18: error: parse error before ´[´ token
exo1.c:18: warning: data definition has no type or storage class
exo1.c:19: error: parse error before ´[´ token
exo1.c:19: warning: data definition has no type or storage class
exo1.c:20: error: parse error before ´.´ token
exo1.c:22: error: parse error before ´[´ token
exo1.c:22: warning: data definition has no type or storage class
exo1.c:23: error: parse error before ´[´ token
exo1.c:23: warning: data definition has no type or storage class
exo1.c:24: error: parse error before ´[´ token
exo1.c:24: warning: data definition has no type or storage class
exo1.c:25: error: parse error before ´.´ token
exo1.c:27: error: parse error before ´[´ token
exo1.c:27: warning: data definition has no type or storage class
exo1.c:28: error: parse error before ´[´ token
exo1.c:28: warning: data definition has no type or storage class
exo1.c:29: error: parse error before ´[´ token
exo1.c:29: warning: data definition has no type or storage class
exo1.c:30: error: parse error before ´.´ token
voila
mais tu ne peut pas mettre d´instruction en dehors d´une fonction, écrit ton programme comme tel :
struct individu{
char nom[20];
char ville[10];
char prenom[10];
int age;
};
struct individu tab[50];
void init()
{
strcpy(tab[0].nom,"henri");
strcpy(tab[0].ville,"paris");
strcpy(tab[0].prenom,"martin");
tab[0].age=40;
strcpy(tab[1].nom,"chevalier");
/ *
. ..
tout le reste
}
int main(){
init();
int i,j,k,l;
for(i=0;i<4;i++){
printf("%s\n",tab[i].nom);
for(j=0;j<4;j++)
printf("%s\n",tab[i].ville);
for(k=0;k<4;k++)
printf("%s\n",tab[i].prenom);
for(l=0;l<4;l++)
printf("%d\n",tab[i].age);
}
return 0;
}
J´avais même pas fait gaffe ![]()
bah, on pouvait pas savoir avant, puice qu´il n´avait pas donné son code...
ah ok merci désolé je suis débutant ![]()
ya pas de quoi, c´est pas grave.
Ah oui sinon j´ai un autre probleme mais avec le qsort voila le programme:
struct individu{
char nom[20];
char ville[10];
char prenom[10];
int age;
};
struct individu tab[50];
void init(){
strcpy(tab[0].nom,"henri");
strcpy(tab[0].ville,"paris");
strcpy(tab[0].prenom,"martin");
tab[0].age=40;
strcpy(tab[1].nom,"chevalier");
strcpy(tab[1].ville,"marseille");
strcpy(tab[1].prenom,"mark");
tab[1].age=33;
strcpy(tab[2].nom,"barock");
strcpy(tab[2].ville,"bordeau");
strcpy(tab[2].prenom,"marie");
tab[2].age=19;
}
int compare(struct individu * i,struct individu * j){
int k;
k= strcmp(i->nom,j->nom);
if(k!=0)
return k;
return strcmp(i->prenom,j->prenom);
}
int compare2(struct individu * i,struct individu * j){
if(i->age!=j->age)
return i->age-j->age;
return strcmp(i->ville,j->ville);
}
int main(){
int i;
init();
printf("Voici votre agenda au debut:\n");
for(i=0;i<3;i++)
printf("%s\n%s\n%s\n%d\n",tab[i].nom,tab[i].ville,
tab[i].prenom,tab[i].age);printf("Voici votre agenda trié:\n");
qsort(tab,50,sizeof(struct individu),compare);
for(i=0;i<3;i++)
printf("%s\n%s\n%s\n%d\n",tab[i].nom,tab[i].ville,
tab[i].prenom,tab[i].age);
return 0;
}
le copmilatuer ne me met qu´un message d´erreur c´est au niveau du 4eme argument entrer dans le qsort(incompatible pointeur) sinon je peux executer le programe mais il ne m´affichige rien a part quelque 0.
j´aimerai savoir ou se situe mon erreur merci d´avance ![]()
Sinon je sais que ça a rien avoir avec les structure mais j´aimerai savoir comment s´utilise fread ( et aussi a quoi ça sert) car j´arrive pas à l´utilisé merci de votre comprehension
http://www.cplusplus.com/ref/cstdio/fread.html
Kelios
---------
omega, il faudrait que tu mette le message d´erreur précis.
mais sinon dans mon souvenir, il attend un truc sur la forme compare(void *truc1, void *truc2)
je ne sais pas s´il peut faire les cast implicit la dessus.
donc change tes fonctions en un truc du genre et esasye ( je ne sais pas si ça va amrcher) :
int __cdecl compare(void *ii,void *jj){
individu *i=(individu*)ii;
individu *j=(individu*)jj;
int k;
k= strcmp(i->nom,j->nom);
if(k!=0)
return k;
return strcmp(i->prenom,j->prenom);
}
ok
sinon lors de la compilation ça met:
exo1.c: In function `main´:
exo1.c:55: warning: passing arg 4 of `qsort´ from incompatible pointer type
Sinon c´est quoi le int __cdecl
c´est de quelle type? ![]()
c´est quoi compare?
ben compare c´est une fonction qui retourne une valeur positif negatif ou null et selon cette valeur e qsort va ranger dasn le tableau les valeur dans le bon ordre
ben compare c´est une fonction qui retourne une valeur positif negatif ou null et selon cette valeur e qsort va ranger dasn le tableau les valeur dans le bon ordre