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 :

problem de Structure et de char**


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Par défaut problem de Structure et de char**
    Deja bonjour

    Voila je vous expose mon problem cela peut sembler bete mais je voudrais remplir un char ** dans une structure, le problem c'est que je ne connais pas la taille que va faire mon tableau de char**. je m'exprime peut etre tres mal voila mon example
    voila mes tableau dans mon .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    typedef struct s_mini
    {
      int size_tab;
      char **tab_env;
      char **tab_play;
    } t_mini;
    et je souhaiterais donc remplire tab_env et tab_play de cette facon.

    Voila ma fonction de remplissage pour tab_env.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int             tab_env(char *str, t_mini *mini)
    {
      static int   i = 0;
      char  *tabenv[mini->size_tab];
     
      mini->tab_env = malloc(sizeof(tabenv));
      mini->tab_env[i] = str;
      i++;
      return (0);
    }
    a savoir que size_tab est la taille de mon tableau qui n'est pas predefini mais peut varier en fonction de l'environement utiliser. je ne peut donc pas lui donner de valeur fix si non cela aurais etait plus simple pour ^^

    et le problem c'est que lorsque je le test de cette facon avec un putstr ca me donne les bonnes valeurs..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int             tab_env(char *str, t_mini *mini)
    {
      static int   i = 0;
      char  *tabenv[mini->size_tab];
     
      mini->tab_env = malloc(sizeof(tabenv));
      mini->tab_env[i] = str;
    /* test avec un putstr*/
    my_putstr(mini->tab_env[i]);
    /* Fin du test*/
      i++;
      return (0);
    }
    cela me donne exactement la meme chose que si j'afficher le str..
    hors si en dehors de ma fonction je rappel mini->tab_env[0], pour l'afficher cela segfault j'en conclus que cela ne remplis pas correctement mon tableau... j'ai pourtant chercher mais je vois pas d'autre solutions que de connaitre la taille en dur :/ hors cela est impossible ......

    j'espere que je me suis exprimer asser clairement. je vous remerci par avance

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mini->tab_env = malloc(sizeof(tabenv));
    Ici, j'utiliserais ceci (et je supprimerai ton tabenv) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mini->tab_env = malloc(mini->size_tab*sizeof(char*));
    Ensuite, peut-on voir comment tu utilises cette fonction? Parce que je crois que ton problème vient de là. N'oublies pas qu'en C, les paramètres de fonctions sont passés par copie.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Par défaut
    je vien de trouver mon problem, je vous remerci de votre reponse si rapide

    voila la solution pour tout mettre dans ma structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int             tab_env(char *str, t_mini *mini)
    {
      static int   i = 0;
     
      if(i == 0)
        mini->tab_env = malloc(sizeof(*mini->tab_env) * (mini->size_tab + 1));
      mini->tab_env[i] = str;
      i++;
      return (0);
    }
    a la place de mon premier code ^^, enfin je ne sais pas si cette solution est la plus propre

    Merci

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

Discussions similaires

  1. [TP] Problème avec les intervalles de char
    Par Petrucci dans le forum Turbo Pascal
    Réponses: 29
    Dernier message: 11/11/2006, 22h19
  2. [XSLT] Probleme de structure de fichier xsl
    Par ben23 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/07/2006, 10h46
  3. C++ - Probleme avec structure et template
    Par vdumont dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 15h32
  4. Probleme taille structure / parsing tag mp3
    Par lucas_sophia dans le forum C
    Réponses: 6
    Dernier message: 19/03/2006, 16h56
  5. Réponses: 3
    Dernier message: 28/09/2003, 17h08

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