IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Champ manquant dans une structure à la compilation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 43
    Par défaut Champ manquant dans une structure à la compilation
    Bonjour a tous j'ai un exercice don't je ne comprends l'erreur affichee dans la barre de notification de Code blocks ...

    Voici l'enonce de l'exercice. :

    Exercice : créez ce tableau de type Personne et demandez les infos de chacun grâce à une boucle (qui se répète tant qu'il y a des joueurs).

    Faites un petit tableau de 2 joueurs pour commencer..


    C'est le fichier source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
     
    int main( int argc , char *argv[])
    {
     
        int i=0;
        Personne joueurs[1];
        while (i < 2 )
     
        {
     
     
            Personne joueurs[i];
     
            printf("Quel est votre nom ?\n");
     
            scanf("%s",joueurs[i].nom);
     
            printf("Quel est votre prenom ?\n");
     
            scanf("%s",joueurs[i].prenom);
     
            printf("Quel est votre age ?");
     
            scanf("%d",joueurs[i].age);
     
            i+=1;
     
        }
     
        printf(" Joueur 1 voici vos informations %s %s %d\n\n", joueurs[0].nom,joueurs[0].prenom,joueurs[0].age);
        printf(" Joueur 2 voici vos informations %s %s %d\n\n", joueurs[1].nom,joueurs[1].prenom,joueurs[1].age);
     
        return 0;
    }

    et voici le fichier Header (main.h)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    typedef struct Personne Personne ;
     
    struct Personne
     
    {
        char nom[20];
        char prenom[30];
        int age;
     
    };

    on m'affiche le message suivant "Personne has no member named 'nom' et idem pour toutes les sous-variables


    Merci de m'aider et bon apres-midi

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Bonjour et bienvenue,

    Ça fonctionne avec GCC.

    Tu crées un alias avec typedef sur le nom de la structure qui n'est pas encore définie, mais cela reste légal en C. On dirait que ta plateforme crée l'alias comme un type propre sur ce qu'elle connaît de la structure au moment où typedef est invoqué.

    Quel compilateur utilises-tu ?

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Avec Code::Blocks et MinGW, j'obtiens ça :

    ||=== Build: Debug in C (compiler: GNU GCC Compiler) ===|
    C:\cmp.c||In function 'main':|
    C:\cmp.c|15|warning: declaration of 'joueurs' shadows a previous local [-Wshadow]|
    C:\cmp.c|9|warning: shadowed declaration is here [-Wshadow]|
    C:\cmp.c|27|warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat]|
    C:\cmp.c|5|warning: unused parameter 'argc' [-Wunused-parameter]|
    C:\cmp.c|5|warning: unused parameter 'argv' [-Wunused-parameter]|
    ||=== Build finished: 0 error(s), 5 warning(s) (0 minute(s), 1 second(s)) ===|
    

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    A part ça,

    me paraît un peu juste pour deux personnes. Enfin bon c'est sûr que si tu t'amuses à redéclarer le tableau de joueurs quelques lignes plus tard:

    Avec une déclaration statique indexée par une variable non constante, c'est que tu n'as peur de rien.

    Dernier point, il faut donner à scanf l'adresse d'un entier, pas un entier en argument:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%d", &(joueur[i].age));

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 43
    Par défaut ERREUR DE COMPILATION
    Citation Envoyé par Obsidian Voir le message
    Bonjour et bienvenue,

    Ça fonctionne avec GCC.

    Tu crées un alias avec typedef sur le nom de la structure qui n'est pas encore définie, mais cela reste légal en C. On dirait que ta plateforme crée l'alias comme un type propre sur ce qu'elle connaît de la structure au moment où typedef est invoqué.

    Quel compilateur utilises-tu ?

    J'utilise Code Blocks avec GNU GCC Compiler

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je me demande vraiment pourquoi tu m'écris des mails si tu ne lis pas les réponses pour aller reposer ensuite la même question sur le forum !!!
    Nom : okoubisso.jpg
Affichages : 254
Taille : 223,4 Ko

    PS (pour les autres qui n'ont pas compris pourquoi ça ne compile pas chez-lui): dans son code qu'il m'avait envoyé par mail, la structure était décrite ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct Personne Personne ;
    struct Personne {
        char Nom[20];
        char Prenom[30];
        int age;
    };
    Même pas capable de recopier correctement son programme dans le forum (ce qui est assez ironique vu que son erreur de recopie a alors donné une structure où son topic n'a plus de raison d'être...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Débutant] Savoir si un champs est présent dans une structure
    Par bibou1234 dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/10/2011, 10h49
  2. Réponses: 4
    Dernier message: 24/12/2009, 10h37
  3. [AIDE] Champs manquants dans une JSP
    Par Diablo_22 dans le forum Struts 1
    Réponses: 2
    Dernier message: 26/11/2008, 11h21
  4. champs de bits dans une structure - option de gcc pour bon fonctionnement
    Par matdakillah dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 08/10/2008, 12h44
  5. ordre des champs dans une structure
    Par oussema dans le forum C
    Réponses: 8
    Dernier message: 08/03/2007, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo