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 :

Problème tableau de structures et pointeur


Sujet :

C

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème tableau de structures et pointeur
    Heey,
    je dois faire la saisie d'un tableau de structure Te de Ne étudiants à l'aide des pointeurs. Au début ça marche très bien puis au niveau de la date de naissance ça bloque.. Aussi je pense qu'il y'a un problème dans le remplissage de tnotes.

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    void main()
    {
      struct identification {
       int num;
       char section[20];
      };
     
      struct date {
       int jours;
       int mois;
       int annee;
      };
     
      struct etudiant {
       struct identification id;
       char nom[20];
       char prenom[20];
       struct date date_naiss;
       float tnotes[10];
       float moy;
      };
      int ne,nn;
      struct etudiant *te;
      struct etudiant *p;
      float *pn;
      p=te;
     
      do
      { printf ("Donnez le nombre d'etudiant :");
        scanf ("%d",&ne);
      }while ((ne<2)||(ne>20));
     
      te=(struct etudiant*)malloc(ne*(sizeof(struct etudiant)));
     
      do
      { printf ("Donnez le nombre de notes :");
        scanf ("%d",&nn);
      }while((nn<2)||(nn>10));
     
      for (p=te;p<te+ne;p++)
        { printf ("Donnez le num de l'etudiant :");
          scanf ("%d",p->id.num);
          printf ("Donnez la section de l'etudiant :");
          scanf ("%s",p->id.section);
          printf ("Donnez le nom de l'etudiant :");
          scanf ("%s",p->nom);
          printf ("Donnez le prenom de l'etudiant :");
          scanf ("%s",p->prenom);
          printf ("Donnez le jour de naissance de l'etudiant :");
          scanf ("%d",p->date_naiss.jours);
          printf ("Donnez le mois de naissance de l'etudiant :");
          scanf ("%d",p->date_naiss.mois);
          printf ("Donnez l'annee de naissance de l'etudiant :");
          scanf ("%d",p->date_naiss.annee);
          for (pn=p->tnotes;pn<(tnotes+nn);pn++)
          {do
           {printf ("Donnez les notes :");
            scanf ("%f",pn);
           }while ((*pn<0)||(*pn>20));
          }
        }
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Définis "ça bloque".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je ne comprends pas ce struct etudiant *te; struct etudiant *p; p=te;. J'ai l'impression de voir ici un aveugle ("te", qui contient n'importe quoi) guider un autre aveugle ("p"). Avec en plus ces noms "te" et "p" qui sonnent très "enquêtes du juge Ti" (Van Gulik).
    Et donc quand on voit ce genre d'instruction aussi absurde qu'inutile, on ne peut pas s'empêcher de penser que pour le reste c'est pareil => manque de réflexion et de fondation. Et c'est encore renforcé par cette fonction main() que tu nous mets "void" alors qu'elle est "int".

    Donc pose les bons jalons, construit ton code proprement en ayant bien en tête là où tu veux aller et tes soucis disparaitront tous seuls.

    Par exemple ta saisie. Tu ne sens pas déjà que ça va être méga lourd ? "donner le nombre de notes" puis "donner le nom" puis "donner le prénom" puis le jour de naissance etc. Déjà rien que la date ; tu peux pas la faire saisir sous forme jj/mm/aa et la découper sur le "/" pour en extraire les infos ? Et les notes t'es obligé de demander combien il va y en avoir ? Peut pas faire une boucle de 1 à 10 et dire "saisissez la note n ou -1 pour quitter" et donc extraire le nombre réel de notes saisies ? Et faire de même pour le nombre d'étudiants...
    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]

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    J'ai trouvé, te c'est le tableau d'étudiants. nn c'est le nombre de notes. Pour les autres, je chercherai plus tard...

    A part ça, quant on fait scanf() il faut mettre un & devant les variables comme pour toutes les fonctions qui doivent modifier un paramètre (à part pour les pointeurs et les tableaux car leur nom est déjà une adresse) donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          scanf ("%d",&p->id.num);
          scanf ("%d",&p->date_naiss.jours);
          scanf ("%d",&p->date_naiss.mois);
          scanf ("%d",&p->date_naiss.annee);
    for (pn=p->tnotes;pn<(tnotes+nn);pn++) ne doit pas compiler j'aurais écrit for (pn=p->tnotes;pn<p->tnotes+nn;pn++).
    J'ai compris que les pointeurs étaient une contrainte imposée, mais les nommer sur 2 lettres n'est pas une bonne idée

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Mercii pour votre aide !
    Au début je n'ai pas mis les adresses & pr scanf j'ai cru que p et pn sont des pointeurs donc ils nécessitent pas des &...
    J'ai essayé de changer un peu voilà :


    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    struct identification
    {
        int num;
        char section[20];
    };
     
    struct date
    {
        int jours;
        int mois;
        int annee;
    };
     
    struct etudiant
    {
        struct identification id;
        char nom[20];
        char prenom[20];
        struct date date_naiss;
        float tnotes[10];
        float moy;
    };
     
    void remplir (int ne,int nn,struct etudiant *te)
    {
        struct etudiant *p;
        float *tnotes;
        float *pn;
        for (p=te; p<te+ne; p++)
        {
            printf ("Donnez le num et la section de l'etudiant :");
            scanf ("%d%s",&p->id.num,p->id.section);
            printf ("Donnez le nom et le prenom de l'etudiant :");
            scanf ("%s%s",p->nom,p->prenom);
            printf ("Donnez la date de naissance de l'etudiant :");
            scanf ("%d%d%d",&p->date_naiss.jours,&p->date_naiss.mois,&p->date_naiss.annee);
     
            for (pn=p->tnotes; pn<p->tnotes+nn; pn++)
            {
                do
                {
                    printf ("Donnez les notes :");
                    scanf ("%f",pn);
                }
                while ((*pn<0)||(*pn>20));
            }
        }
    }
     
    void main ()
    {
        int ne,nn;
        float *pn;
        struct etudiant *te;
        struct etudiant *p;
        p=te;
     
        do
        {
            printf ("Donnez le nombre d'etudiant :");
            scanf ("%d",&ne);
        }
        while ((ne<2)||(ne>20));
     
        te=(struct etudiant*)malloc(ne*(sizeof(struct etudiant)));
     
        do
        {
            printf ("Donnez le nombre de notes :");
            scanf ("%d",&nn);
        }
        while((nn<2)||(nn>10));
        remplir (ne,nn,te);
     
    }

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sunshine25 Voir le message
    Au début je n'ai pas mis les adresses & pr scanf j'ai cru que p et pn sont des pointeurs donc ils nécessitent pas des &...
    Oui p et pn sont des pointeurs. C'est pour ça que tu écris ensuite p->xxx et pn->yyy. La flèche indique que l'élément placé avant est un pointeur (et n'est en réalité qu'un raccourci vers l'écriture (*p).xxx et (*pn).yyy mais c'est plus pratique d'utiliser la flèche que les parenthèses).
    Mais les membres pointés par cette flèche (exemple p->id.num) ne sont pas des pointeurs (id_num est un int !!!). Donc pour indiquer que tu veux envoyer à scanf l'adresse de ce id_num t'es obligé de mettre "&" devant. Et pareil pour tous les autres...
    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]

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ahhh oui ouii c'est vrai
    je vais te déranger encore avec un autre prog presque de même type et toujours le problème au niveau de la 2ème boucle for je pense. il m'affiche : ( error : struct maison has no member named p2 )
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #include <stdio.h>
    #include <stdlib.h>
     
    struct livre
    {
        char id_liv [20];
        char titre [20];
        char auteur [20];
        int annee_edition;
        char id_liv_suiv [20];
    };
     
    struct date
    {
        int jours;
        int mois;
        int annee;
    };
     
    struct maison
    {
        int identifiant;
        char libelle [20];
        struct date date_crea;
        char id [20];
        struct livre liste_liv[100];
    };
     
     
    void remplir (int nb,int nl,struct maison *tbib)
    {
        struct maison *p;
        struct livre *liste_liv;
        struct liste_liv *p2;
     
        for (p=tbib; p<tbib+nb; p++)
        {
            printf ("Donnez l'identifiant de la maison : ");
            scanf ("%d",&p->identifiant);
            printf ("Donnez le libelle de la maison :");
            scanf ("%s",p->libelle);
            printf ("Donnez la date de creation :");
            scanf ("%d%d%d",&p->date_crea.jours,&p->date_crea.mois,&p->date_crea.annee);
            printf ("Donnez l'id du premier livre de la maison d'edition :");
            scanf ("%s",p->id);
            for (p2=p->liste_liv; p2<p->liste_liv+nl; p2++)
            {
                printf ("Donnez l'id du livre :");
                scanf ("%s",p->p2.id_liv);
                printf ("Donnez le titre et le titre de l'auteur du livre :");
                scanf ("%s%s",p->p2.titre,p->p2.auteur);
                printf ("Donnez l'annee d'edition du livre :");
                scanf ("%d",&p->p2.annee_edition);
                printf ("Donnez l'id du livre suivant :");
                scanf ("%s",p->p2.id_liv_suiv);
            }
        }
    }
     
    void main ()
    {
        int nb,nl;
        struct liste_liv *p2;
        struct maison *tbib;
        struct maison *p;
        p=tbib;
     
        do
        {
            printf ("Donnez le nombre de maisons d'editions :");
            scanf ("%d",&nb);
        }
        while ((nb<0)||(nb>60));
     
        tbib=(struct maison*)malloc(nb*sizeof(struct maison));
     
        do
        {
            printf ("Donnez le nombre de livres d'une maison d'edition :");
            scanf ("%d",&nl);
        }
        while ((nl<0)||(nl>60));
     
        remplir (nb,nl,tbib);
    }

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sunshine25 Voir le message
    il m'affiche : ( error : struct maison has no member named p2 )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct maison {
    int identifiant;
    char libelle [20];
    struct date date_crea;
    char id [20];
    struct livre liste_liv[100];
    };
     
    void remplir (int nb,int nl,struct maison *tbib)
    {struct maison *p;
        ...
       scanf ("%s",p->p2.id_liv);
    }
    Je confirme !!! Ta structure "maison" possède un identifiant, un libellé, un date_crea, un id et un list_liv. A priori, et aussi à fortiori il n'y a pas de "p2". Donc quand tu tapes dans p->p2 ça signifie que tu veux atteindre le membre "p2" de "p" qui est du type "struct maison".

    Sinon je t'ai déjà fait remarquer que "main" n'était pas void. De plus il est habituel (et plus ou moins normalisé) de nommer ses structures "s_xxx" => struct s_maison.

    Et enfin indente tes codes. Déjà on peut le lire et le comprendre 100 fois plus vite et en plus un code écrit en vrac ça laisse penser que c'est un code dont t'as rien à cirer. Donc si t'en as rien à cirer, nous non plus...
    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]

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    y'a plus de problème là ??

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <stdio.h>
    #include <stdlib.h>
     
    struct s_livre
    {
        char id_liv [20];
        char titre [20];
        char auteur [20];
        int annee_edition;
        char id_liv_suiv [20];
    };
     
    struct s_date
    {
        int jours;
        int mois;
        int annee;
    };
     
    struct s_maison
    {
        int identifiant;
        char libelle [20];
        struct s_date s_date_crea;
        char id [20];
        struct s_livre s_liste_liv[100];
    };
     
     
    void remplir (int nb,int nl,struct s_maison *tbib)
    {
        struct s_maison *p;
        struct s_livre *p2;
        for (p=tbib; p<tbib+nb; p++)
        {
            printf ("Donnez l'identifiant de la maison : ");
            scanf ("%d",&p->identifiant);
            printf ("Donnez le libelle de la maison :");
            scanf ("%s",p->libelle);
            printf ("Donnez la date de creation :");
            scanf ("%d%d%d",&p->s_date_crea.jours,&p->s_date_crea.mois,&p->s_date_crea.annee);
            printf ("Donnez l'id du premier livre de la maison d'edition :");
            scanf ("%s",p->id);
            for (p2=p->s_liste_liv; p2<p->s_liste_liv+nl; p2++)
            {
                printf ("Donnez l'id du livre :");
                scanf ("%s",p2->id_liv);
                printf ("Donnez le titre et le titre de l'auteur du livre :");
                scanf ("%s%s",p2->titre,p2->auteur);
                printf ("Donnez l'annee d'edition du livre :");
                scanf ("%d",&p2->annee_edition);
                printf ("Donnez l'id du livre suivant :");
                scanf ("%s",p2->id_liv_suiv);
            }
        }
    }
     
    void main ()
    {
        int nb,nl;
        struct s_livre *p2;
        struct s_maison *tbib;
        struct s_smaison *p;
        p=tbib;
     
        do
        {
            printf ("Donnez le nombre de maisons d'editions :");
            scanf ("%d",&nb);
        }
        while ((nb<0)||(nb>60));
     
        tbib=(struct s_maison*)malloc(nb*sizeof(struct s_maison));
     
        do
        {
            printf ("Donnez le nombre de livres d'une maison d'edition :");
            scanf ("%d",&nl);
        }
        while ((nl<0)||(nl>60));
     
        remplir (nb,nl,tbib);
    }

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sunshine25 Voir le message
    y'a plus de problème là ??
    Si, main est encore typée "void" mais bon, devant un tel effort on passera sur ce détail...
    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]

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ouii et ce n'est qu'une petite partie de mon projet xD breef main ne retourne rien juste elle fait le remplissage et la saisie des tailles donc j'ai mis void..

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sunshine25 Voir le message
    breef main ne retourne rien juste elle fait le remplissage et la saisie des tailles donc j'ai mis void..
    main() retourne toujours quelque chose. Il s'agit d'une valeur comprise entre 0 et 64 (par défaut 0).

    Quand le programme est appelé depuis un shell Unix, alors cette valeur est récupérée dans la variable "$?" du shell. Cela permet au shell (et par ricochet à l'utilisateur qui est derrière), de savoir si le programme s'est bien exécuté (valeur à 0) ou bien s'il y a eu un soucis (valeur différente de 0, la valeur pouvant alors servir d'indicateur du type de souci).

    Cela permet même ensuite d'écrire des scripts shells qui pourront prendre une décision selon la réussite (valeur à 0) ou l'échec (valeur différente de 0) de ton programme.
    Si par exemple ton programme se nomme" prog", alors tu peux ensuite écrire (en shell) un truc de ce type
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if prog; then
        .... # action à exécuter si prog a renvoyé 0...
    else
        .... # action à exécuter si prog n'a pas renvoyé 0...
    fi

    Donc c'est pour ça que main n'est pas void. Ceci dit j'ai jamais testé avec main en void voir s'il y avait ue valeur qui en ressortait quand-même...
    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. problème tableau de structure
    Par alaninho dans le forum C
    Réponses: 9
    Dernier message: 24/08/2012, 14h18
  2. problème tableau de structure
    Par scary dans le forum Débuter
    Réponses: 8
    Dernier message: 30/03/2008, 19h38
  3. Problème free() : Tableau de structures
    Par bit_o dans le forum C
    Réponses: 11
    Dernier message: 28/04/2007, 15h53
  4. Copie de structure par pointeur - Problème LSB MSB
    Par the_ionic dans le forum Réseau
    Réponses: 4
    Dernier message: 17/07/2006, 15h08
  5. [structure et pointeur] problème d'affichage
    Par kitsune dans le forum C
    Réponses: 17
    Dernier message: 22/03/2006, 22h20

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