Tableau de struct en c

mathlo -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  2. mathlo
     
    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
  3. loupius Messages postés 789 Statut Membre 148
     
    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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      J'aurais pas mieux dit :-)
      0