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 :

Pointeurs de structures


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Par défaut Pointeurs de structures
    Ndm : messages déplacés depuis ce fil.

    Salut à tous,

    En essayant de faire un tableau de structures, je rencontre des problèmes, non pas de compilation mais de programmation. Essayez vous-mêmes.

    Un petit coup de main ?
    Merci.

    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
    # include <stdio.h>
    # include <stdlib.h>
    # define T 100
    # define PE 2
     
    typedef struct
    {
        int age;
        char nomPrenom[T];
        char sexe[1];
     
    }donnees;
     
    int main(int argc, char *argv[])
    {
        int i=0;
        donnees personnes[PE];
        printf("\t\t\t==Bienvenue==\n");
        for (i=0; i<PE; i++)
        {
        printf("L'employer  %d:\n", personnes[PE]);
        printf("\nEntre le Nom et Prenom :");
        scanf("%s", &personnes[i].nomPrenom); 
        printf("\nEntre l'age :");
        scanf("%d", &personnes[i].age);
        printf("\nEntre le sexe :");
        scanf("%s", &personnes[i].sexe);
        }
     printf("Les donnees entre st:");
        for (i=0; i<PE; i++)
        {
        printf("L'employer %d:\nNom:%s \n%d ans \nsexe: %s", personnes[PE], personnes[i].nomPrenom, personnes[i].age, personnes[i].sexe);
        }
        return 0;
    }

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut
    Salut, je débute comme toi mais je pense avoir vu quelques erreurs:
    Tu déclare une chaine d'un caractère seulement donc il n'y a pas la place pour le caractère de fin de chaine.
    Tu pourrais déclarer à la place un caractère, ou même un bool et l'appeler homme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("L'employer  %d:\n", i+1);
    Ici, si j'ai bien compris tu veux afficher le numéro de l'employer dans ton tableau.
    Tu mettais une constante, i est la variable de parcours de ton tableau de structure dc c'est elle qu'il faut utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%(T-1)[a-zA-Z]s", personnes[i].nomPrenom);
    Ce formatage te permet de ne récupérer que les T-1 caractères (il faut la place du caractère de fin de chaine) et de ne tenir compte que des lettre (minuscules et majuscules) Tu peux lire le man de scanf très bien fait par un Renault (je link en edit si je le retrouve)

    édit:
    le man:http://man.developpez.com/man3/scanf.3.php
    le tuto:http://xrenault.developpez.com/tutoriels/c/scanf/

    et pour la structure j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct donnees
    {
        int age;
        char nomPrenom[T];
        char sexe[2];//taille+1 pr le caractere de fin de chaine
     
    }personnes[PE];
    on déclare un tableau de taille PE de structure donnees.
    Ensuite j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct donnees donnes;

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Salut

    C'est bien d'avoir mis des macros pour la taille des chaines, mais une bonne habitude à prendre est de définir tes chaines ainsi: char nomPrenom[T+1]. Ca indique aux autres lecteurs que tu as bien pensé à l'espace pour le '\0'.
    Ce qui éviterait d'ailleurs cette ambigüité pour le sexe. Veux-tu y stocker une chaine de caractères (dans ce cas un [1] est insuffisant) ou seulement y stocker un caractère (et dans ce cas définir un tableau est idiot).

    Une autre habitude utile serait de nommer tes types "t_qqchose". Ca éviterait ensuite de confondre le type "donnees" avec la variable "donnees".

    Dernier détail: Le nom d'un tableau étant équivalent à l'adresse de son premier élément, pas de "&" pour les saisies de chaines dans les scanf().

    Citation Envoyé par bazvindous Voir le message
    Essayez vous-mêmes.
    Inutile, on voit de suite ce qui pêche...
    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. Réponses: 60
    Dernier message: 13/02/2007, 19h53
  2. [C#]Pointeur vers structure
    Par torNAdE dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/05/2006, 19h43
  3. Réponses: 7
    Dernier message: 08/04/2006, 12h18
  4. Pointeurs et structures...
    Par vinzzzz dans le forum C
    Réponses: 13
    Dernier message: 18/01/2006, 11h37
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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