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 de pointeurs et de structures


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Problème de pointeurs et de structures
    Bonjour,

    J'ai une souci avec mon code, je suis débutant et j'essaie de m'entraîner un peu sur les structures et pointeurs. J'essaie de faire une fonction qui alloue une structure dynamiquement, puis une autre qui alloue chacun de ces paramètres dynamiquement. J'y arrive en faisant passer un pointeur sur ma structure à ma deuxième fonction, mais pas en lui passant des pointeurs sur les paramètres de cette dite structure, j'aimerais comprendre pourquoi ... :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct mot mot;
    struct mot
    {
        char* text;
        int* longueur;
    };
     
    void choisirMot(char* text, int* longueur);
    mot* creerMot();
     
    int main()
    {
        mot* motMystere = NULL;
     
        motMystere = creerMot();
     
        return 0;
    }
     
    mot* creerMot()
    {
        mot* motCree = NULL;
     
        motCree = calloc(1, sizeof(mot));
        if(motCree == NULL){exit(3);}
     
        motCree->longueur = NULL;
        motCree->text = NULL;
     
        printf("Adresse text : %i\n", motCree->text); // J'ai ici NULL
        printf("Adresse longueur : %i\n", motCree->longueur); // J'ai ici NULL
     
        choisirMot(motCree->text, motCree->longueur);
     
        printf("Adresse text : %i\n", motCree->text); // J'ai ici NULL !!!
        printf("Adresse longueur : %i\n", motCree->longueur); // J'ai ici NULL !!!
     
        return motCree;
    }
     
    void choisirMot(char* text, int* longueur)
    {
        int l = 5;
        char* t = "corde";
        int i = 0;
     
        text = calloc(l, sizeof(char));
        if(text == NULL){exit(0);}
     
        printf("Adresse text : %i\n", text); // J'ai ici une adresse
     
        longueur = calloc(1, sizeof(int));
        if(longueur == NULL){exit(1);}
     
        printf("Adresse longueur : %i\n", longueur); // J'ai ici une adresse
    }

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 35
    Points
    35
    Par défaut
    bonjour,

    ligne 36 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        choisirMot(motCree->text, motCree->longueur);
    motCree->text et mot Cree->longueur ont tout les 2 la valeur NULL
    cette ligne est équivalente à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        choisirMot( NULL , NULL );
    ce n'est pas ce que tu veux :

    modifie l'appel à choisirMot de la façon suivante
    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
     
     
    (...)
     
    //void choisirMot(char* text, int* longueur);
    // à remplacer par
    void choisirMot(mot* mot_a_completer);
     
    (...)
     
    //choisirMot(motCree->text, motCree->longueur);
    // à remplacer par
        choisirMot(motCree);
     
     (...)
     
    void choisirMot(mot* mot_a_completer)
    {
        int l = 5;
        char* t = "corde";
        int i = 0;
     
        mot_a_completer->text = calloc(l, sizeof(char));
        if(mot_a_completer->text == NULL){exit(0);}
     
        printf("Adresse text : %i\n", mot_a_completer->text);  
        mot_a_completer->longueur = calloc(1, sizeof(int));
        if(mot_a_completer->longueur == NULL){exit(1);}
     
        printf("Adresse longueur : %i\n", mot_a_completer->longueur); 
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    J'avais trouvé cette solution mais n'avais pas compris pourquoi ça ne marchait pas comme ça.
    Merci beaucoup et bonne continuation. Je clôture le sujet.

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

Discussions similaires

  1. Problème de pointeur à travers des structures.
    Par sweet live dans le forum Débuter
    Réponses: 8
    Dernier message: 13/02/2012, 20h19
  2. Problème de Pointeur avec une structure pointée
    Par misterlagaffe dans le forum C
    Réponses: 25
    Dernier message: 03/02/2012, 09h17
  3. Réponses: 0
    Dernier message: 07/10/2008, 10h10
  4. Petit problème sur pointeurs de structures
    Par benjaminb dans le forum C
    Réponses: 5
    Dernier message: 05/01/2008, 20h08
  5. Problème sur un pointeur dans une structure
    Par steph_1 dans le forum Langage
    Réponses: 5
    Dernier message: 05/09/2007, 18h59

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