CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme avec les structures

omegasf3
omegasf3
Niveau 8
09 janvier 2005 à 14:17:09

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).

dnob700
dnob700
Niveau 10
09 janvier 2005 à 17:16:51

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];

MathieuN7
MathieuN7
Niveau 10
09 janvier 2005 à 19:08:47

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!

dnob700
dnob700
Niveau 10
09 janvier 2005 à 19:32:07

ou peut-être :

tab[2]->truc

remplacer les point par des ->

MathieuN7
MathieuN7
Niveau 10
09 janvier 2005 à 20:04:37

Non plus, puisque tab[0] n´est pas un pointeur...

omegasf3
omegasf3
Niveau 8
09 janvier 2005 à 22:09:34

ok je vous met tout le programme et les errueur généré
le programme:

  1. include < stdlib.h>
  2. include < stdio.h>
  3. include " qsort.h"
  4. include < string.h>

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

dnob700
dnob700
Niveau 10
09 janvier 2005 à 22:39:46

mais tu ne peut pas mettre d´instruction en dehors d´une fonction, écrit ton programme comme tel :

  1. include < stdlib.h>
  2. include < stdio.h>
  3. include " qsort.h"
  4. include < string.h>

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;
}

MathieuN7
MathieuN7
Niveau 10
10 janvier 2005 à 17:32:21

:honte: J´avais même pas fait gaffe :rire:

dnob700
dnob700
Niveau 10
10 janvier 2005 à 17:38:20

bah, on pouvait pas savoir avant, puice qu´il n´avait pas donné son code...

omegasf3
omegasf3
Niveau 8
10 janvier 2005 à 21:13:46

ah ok merci désolé je suis débutant :snif2:

dnob700
dnob700
Niveau 10
10 janvier 2005 à 22:31:26

ya pas de quoi, c´est pas grave.

omegasf3
omegasf3
Niveau 8
10 janvier 2005 à 23:27:11

Ah oui sinon j´ai un autre probleme mais avec le qsort voila le programme:

  1. include < stdlib.h>
  2. include < stdio.h>
  3. include < string.h>

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 :merci:

omegasf3
omegasf3
Niveau 8
10 janvier 2005 à 23:39:24

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

Kelios
Kelios
Niveau 8
10 janvier 2005 à 23:41:31

http://www.cplusplus.com/ref/cstdio/fread.html

Kelios
---------

dnob700
dnob700
Niveau 10
11 janvier 2005 à 16:28:08

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);
}

omegasf3
omegasf3
Niveau 8
11 janvier 2005 à 17:29:30

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

omegasf3
omegasf3
Niveau 8
11 janvier 2005 à 18:03:35

Sinon c´est quoi le int __cdecl
c´est de quelle type? :question:

MathieuN7
MathieuN7
Niveau 10
11 janvier 2005 à 18:59:03

c´est quoi compare?

omegasf3
omegasf3
Niveau 8
11 janvier 2005 à 19:06:56

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

omegasf3
omegasf3
Niveau 8
11 janvier 2005 à 19:07:09

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

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment