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 :

Erreur de compilation avec une structure


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut Erreur de compilation avec une structure
    Bonjour,
    je suis en trin d'apprendre à utiliser les structures en langage C et je bloque sur ce programme.

    Le programme doit demander le nom, prénom, adresse, age et sexe, le stocker dans une structure "Personne" qui est elle même stocker dans un tableau.

    Le problème c'est que j'obtiens l'erreur suivante à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    structure.c: In function ‘main’:
    structure.c:9: error: expected expression before ‘]’ token
    structure.c:10: error: expected expression before ‘]’ token
    A mon avis cela provient certainement de la variable tableau[] situé dans les deux appels de fonction mais je ne sais vraiment pas comment résoudre ce problème.


    Dans le .C :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    #include <stdlib.h>
    #include <stdio.h>
    #include "structure.h"
     
    int main()
    {
        Personne tableau[2] = {0}; 
        int i = 0, tailleTableau = 2;
        ecrireTableau(tableau[], tailleTableau);
        afficherTableau(tableau[], tailleTableau);
    }
     
    //Fonction permettant d'afficher le contenu du tableau
    void afficherTableau(Personne tableau[],int tailleTableau)
    {
        int i = 0;
        for (i = 0; i < tailleTableau; i++)
        {
            printf("Nom : %s \n",tableau[i].nom);
            printf("Prenom : %s \n",tableau[i].prenom);
            printf("Adresse : %s \n",tableau[i].adresse);
            printf("Age : %d ans \n",tableau[i].age);
            printf("%d \n",tableau[i].sexe);
            if (tableau[i].sexe == 1)
            {
                printf("Sexe : homme \n");
            }
            else if (tableau[i].sexe == 0)
            {
                printf("Sexe : femme \n");
            }
            else
            {
                printf("Sexe ? \n");
            }
        } 
    }
     
    //Fonction permettant d'insérer des valeurs dans le tableau 
    void ecrireTableau(Personne tableau[],int tailleTableau)
    {
        int i = 0;
        for (i = 0; i < tailleTableau; i++)
        {
            printf("Veuillez entrer votre nom : \n");
            scanf("%s",tableau[i].nom);
            printf("Veuillez entrer votre prenom : \n");
            scanf("%s",tableau[i].prenom);
            printf("Veuillez entrer votre adresse : \n");
            scanf("%s",tableau[i].adresse);
            printf("Veuillez entrer votre age : \n");
            scanf("%d",&tableau[i].age);
            printf("Veuillez entrer votre sexe (1 pour homme et 0 pour femme) : \n");
            scanf("%d",&tableau[i].sexe);
        }
    }

    Et dans le .h :

    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
    #ifndef DEF_STRUCTURE
    #define DEF_STRUCTURE
    #define TAILLE 100
     
    typedef struct Personne Personne;
    struct Personne
    {
        char nom[TAILLE];
        char prenom[TAILLE];
        char adresse[TAILLE];
        int age;
        int sexe;
     
    };
     
    void afficherTableau(Personne tableau[],int tailleTableau);
    void ecrireTableau(Personne tableau[], int tailleTableau);
     
     
    #endif
    Vous auriez une idée ?

    Merci par avance :-)

  2. #2
    Membre éprouvé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Février 2008
    Messages : 39
    Par défaut
    Salut,

    Il faut enlever les [] dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        ecrireTableau(tableau[], tailleTableau);
        afficherTableau(tableau[], tailleTableau);
    tableau est défini en tant que tableau de personne, tes fonctions savent qu'elles reçoivent un tableau de Personne, comme dirait Maxwell, c'est pas la peine d'en rajouter

    Bonne journée,

    Aldiemus

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    Merci beaucoup.

    Bonne journée.

  4. #4
    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
    Citation Envoyé par existenz3 Voir le message
    Bonjour,
    je suis en trin d'apprendre à utiliser les structures en langage C et je bloque sur ce programme.

    Le programme doit demander le nom, prénom, adresse, age et sexe, le stocker dans une structure "Personne" qui est elle même stocker dans un tableau.

    Le problème c'est que j'obtiens l'erreur suivante à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    structure.c: In function ‘main’:
    structure.c:9: error: expected expression before ‘]’ token
    structure.c:10: error: expected expression before ‘]’ token
    A mon avis cela provient certainement de la variable tableau[] situé dans les deux appels de fonction mais je ne sais vraiment pas comment résoudre ce problème.


    Dans le .C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdlib.h>
    #include <stdio.h>
    #include "structure.h"
     
    int main()
    {
        Personne tableau[2] = {0}; 
        int i = 0, tailleTableau = 2;
        ecrireTableau(tableau[], tailleTableau);
        afficherTableau(tableau[], tailleTableau);
    }
    //Fonction permettant d'afficher le contenu du tableau
    void afficherTableau(Personne tableau[],int tailleTableau)
    Vous auriez une idée ?
    Bien sûr.
    Ta fonction afficherTableau reçoit un tableau qu'elle stockera dans la variable "tableau". Ton main a un tableau nommé "tableau". Cette variable étant déjà un tableau, pas la peine de mettre [] pour signifier que c'est un tableau quand tu le nommes puisque c'en est déjà un.

    Accessoirement, je rajouterai 3 remarques
    1) essaye de nommer tes structures s_qqchose et tes types t_qqchose. Tu t'en sortiras mieux.

    2) la variable "tailleTableau" est fortement liée à ton tableau. Chaque fois que tu devras manipuler le tableau, il te faudra avoir aussi cette variable. Dans ces cas là, essaye de prendre l'habitude de grouper le tableau et la variable dans une structure dédiée. C'est une petite contrainte à avoir dès le départ mais ensuite tu seras libéré de beaucoup de problèmes

    3) Tu as aussi la possibilité de remplacer cette variable par une sentinelle, c.a.d. un élément de ton tableau ayant des valeurs très particulières, comme par exemple un age=-1. Ensuite te suffit de boucler tant que age != -1. Très pratique aussi.

    Exemple

    Code c : 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
    //Fonction permettant d'afficher le contenu du tableau
    void afficherTableau(Personne tableau[])
    {
        Personne *pt;
        for (pt=tableau, pt->age != -1; pt++)
        {
            printf("Nom : %s \n",pt->nom);
            printf("Prenom : %s \n",pt->prenom);
            printf("Adresse : %s \n",pt->adresse);
            printf("Age : %d ans \n",pt->age);
            printf("%d\n",pt->sexe);
            if (pt->sexe == 1)
            {
                printf("Sexe : homme \n");
            }
            else if (pt->sexe == 0)
            {
                printf("Sexe : femme \n");
            }
            else
            {
                printf("Sexe ? \n");
            }
        } 
    }
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PR-2003] erreur de compilation avec une checkbox
    Par andri2 dans le forum VBA Project
    Réponses: 1
    Dernier message: 17/04/2013, 16h13
  2. Erreur de compilation avec une biblio :-(
    Par membreComplexe12 dans le forum Bibliographies - Index - Glossaires
    Réponses: 3
    Dernier message: 15/12/2010, 15h09
  3. Réponses: 0
    Dernier message: 28/01/2009, 10h14
  4. [Compiler] Erreur dans compilation avec une toolbox independante
    Par ImagingAllthe dans le forum MATLAB
    Réponses: 4
    Dernier message: 25/03/2008, 16h42

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