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 :

Structure de données en C : problème lors de la recuperation d'une saisie


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 24
    Points : 41
    Points
    41
    Par défaut Structure de données en C : problème lors de la recuperation d'une saisie
    Salut a tous. J'ai essayé de créer une structure que j'ai nommé s_point avec une fonction d'initialisation et une fonction de lecture. La compilation marche sans problème mais le programme plante lorsque j'essaye d'initialiser le premier champ de ma structure; voici mon code 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
    #include <stdio.h>
     
    typedef struct s_point
    {
        char c;
        int x, y;
    }s_point;
     
    void initialise(s_point *p);
    void affiche(s_point *p);
     
    main()
    {
        s_point a, b;
        initialise(&a);
        affiche(&a);
        initialise(&b);
        affiche(&b);
    }
     
    void initialise(s_point *p)
    {
        printf("Nom du point : ");
        scanf("%c",p->c);
        printf("x            : ");
        scanf("%d",p->x);
        printf("y            : ");
        scanf("%d",p->y);
    }
     
    void affiche(s_point *p)
    {
        printf("point %c de coordonnees %d %d\n", p->c, p->x, p->y);
    }

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Bonjour,

    Citation Envoyé par sesomatre Voir le message
    Salut a tous. J'ai essayé de créer une structure que j'ai nommé s_point avec une fonction d'initialisation et une fonction de lecture. La compilation marche sans problème mais le programme plante lorsque j'essaye d'initialiser le premier champ de ma structure; voici mon code 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
    #include <stdio.h>
     
    typedef struct s_point
    {
    char c;
    int x, y;
    }s_point;
     
    void initialise(s_point *p)
    {
    printf("Nom du point : ");
    scanf("%c",p->c);
    printf("x : ");
    scanf("%d",p->x);
    printf("y : ");
    scanf("%d",p->y);
    }
    Tu as bien pensé à passer l'adresse de ta structure à « initialise() », en utilisant « & ». C'est bien. À présent, il faut faire la même chose avec les champs de ta structure.

    Dans cette expression, « p->c » signifie « la valeur du champ c de la structure pointée par p. ». Elle se comporte comme si on écrivait « c » tout court, si c était une variable locale, si bien que ce n'est pas l'adresse du champ c que tu passes à scanf(), mais sa valeur propre, qui n'a aucun intérêt pour la fonction et qui, en plus, est encore indéfinie car non initialisée à ce stade. Il faut ajouter un « & » là-aussi devant ton expression.

    Même chose pour p->x et p->y.

    Bon courage.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 24
    Points : 41
    Points
    41
    Par défaut
    Cooooool merci Obsidian. ca marche. une veritable erreur de débutant!!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/08/2014, 15h16
  2. Réponses: 1
    Dernier message: 10/08/2011, 14h26
  3. Problème lors de la création d'une base de données
    Par dr.zed dans le forum Administration
    Réponses: 3
    Dernier message: 04/04/2011, 12h45
  4. Réponses: 11
    Dernier message: 05/08/2009, 12h30
  5. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37

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