Tableau de struct en c

Fermé
mathlo - 8 mars 2012 à 20:45
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 mars 2012 à 22:34
Bonjour,
j'essaie de faire un petit programme en c pour classer/ afficher les notes du class a un controle...

voila mon main

#include <stdio.h>
#include <stdlib.h>
#include "header.h"


int main()
{
int nbre=5, compteur=0;
classement personne[];

printf("Entrez la note puis le nom de l'eleve...\n");

while(compteur<nbre)
{
printf("eleve n°%d", compteur+1);
scanf("%d", &personne[compteur].note);
scanf("%s", &personne[compteur].nom);
compteur++;
}
compteur=0;
printf("on a donc :\n");
while(compteur< nbre)
{
printf("%s -> %d", personne[compteur].nom, personne[compteur.note]);
compteur++;
}
return 0;
}


ma struct dans un autre fichier .c

typedef struct classement classement
{
int note;
char nom[25];
};




et mon header

typedef struct classement classement;



-------------------------

mais ca bug des le debut au moment de la déclaration du tableau de personnes si quelquun a une idée....
merci d'avance

A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
9 mars 2012 à 10:46
Bonjour,

classement personne[];
Tu déclares un tableau mais ne précises pas la taille. Donc forcément ça bug lorsque tu fais personne[compteur].
Si nbre est fixe et n'est pas choisi par l'utilisateur, je te conseille d'utiliser de faire : "#define NBRE 5" (sans point virgule) juste en dessous des #include.
Ensuite, tu pourras mettre : classement personne[NBRE];
N'oublie pas de remplacer nbre par NBRE dans la suite de ton programme.

scanf("%s", &personne[compteur].nom);
Enlève l'esperluette (&). Il n'en faut pas.

printf("%s -> %d", personne[compteur].nom, personne[compteur.note]
erreur de frappe je pense : personne[compteur].note fonctionnera mieux.

Tiens-nous au courant. Et merci la prochaine fois de mettre ton code dans des balises "code" (à droite du bouton souligné"). Sinon c'est illisible.
0
merci beaucoup de ton aide....
alors jai essayé de corriger comme tu m'as dit...
j'ai simplifié mon code, pour avoit tout dans le main et y a plus d'erreurs... je lance le programme et la... apres la saisie de la premiere note ca bug -_- :(

je met mon nouveau code (avec les balises :p) :

#include <stdio.h>
#include <stdlib.h>
#define NBRE 5

int main()
{
    int compteur=0;

    typedef struct
    {      int note;
           char nom[100];
    }
    clas;
    clas test[5];

    printf("Entrez la note puis le nom de l'eleve...\n");


    while(compteur<NBRE)
    {
        printf("eleve n_%d : ", compteur+1);
        scanf("%d", test[compteur].note);
        scanf("%s", test[compteur].nom);
        compteur++;
    }
    compteur=0;
    printf("on a donc :\n");
    while(compteur< NBRE)
    {
        printf("%s -> %d", test[compteur].nom, test[compteur].note);
        compteur++;
    }
    return 0;
}



merci encore pour ton aide fiddy... ;)
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
Modifié par loupius le 9/03/2012 à 20:51
En attendant que Fiddy revienne de dîner, tu peux essayer:
  scanf("%d", &test[compteur].note);
et puis
  printf("%s -> %d\n", test[compteur].nom, test[compteur].note);
serait sans doute mieux.
Bonne continuation.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
9 mars 2012 à 22:34
J'aurais pas mieux dit :-)
0