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 :

malloc tableau de chaines de caractères


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut malloc tableau de chaines de caractères
    Bonjour,

    Quelqu'un pourrait m'éclaircir sur l'allocation de mémoire pour un tableau de chaines de caractères svp ?

    J'ai essayer de faire pareil que pour un tableau d'int mais c'est pas tout à fait pareil ....

    Pour l'instant j'ai ça mais y'a une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *tab_ip_ul_TCP[50];
    tab_ip_ul_TCP = (char*) malloc ((nb_ligne + 1) * 50 * sizeof(char));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: incompatible types in assignment
    Merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Alors, la variable tab_ip_ul_TCP est avant tout un tableau. On peut donc manipuler chaque élément un à un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    size_t i;
    char *tab_ip_ul_TCP[50];
    for(i = 0; i < 50; ++i) {
        tab_ip_ul_TCP[i] = malloc((nb_lignes + 1) * sizeof **tab_ip_ul_TCP);
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut
    Ah ... en fait, je veux créer un tableau de chaine de caractères de 50 éléments et pas 50 tableaux de char* en fait

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par Yunchi Voir le message
    Ah ... en fait, je veux créer un tableau de chaine de caractères de 50 éléments et pas 50 tableaux de char* en fait
    Alors, ce n'est pas beaucoup plus compliqué, le plus simple à mon avis est de créer un type 'chaine' comme tableau de 50 caractères, puis le manipuler normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef char chaine[50];
     
    /*...*/
     
    chaine *tab_ip_ul_TCP;
    tab_ip_ul_TCP = malloc(nb_lignes * sizeof * tab_ip_ul_TCP);

  5. #5
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Etant donné le nom des variables, j'imagines que c'est en fait un tableau de (nlignes) chaines de caracteres que tu veux

    Dans tous les cas, si tu fait un tableau à deux dimensions (car au final, il s'agit bien d'un tableau de deux dimensions de char ici ) bah il faut faire deux mallocs !

    Un pour lui dire que tu veux nblignes éléments, et un pour lui dire que chaque élément est une chaine de caractère (et non pas un pointeur) d'une longeur de 50.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char **tab_ip_ul_TCP = NULL;
    int i;
    tab_ip_ul_TCP = (char**) malloc (nb_lignes* sizeof(char*));
    for(i=0 ; i<nb_lignes; i++) tab_ip_ul_TCP[i] = (char*) malloc (50 * sizeof(char));
    P.S. si c'est l'inverse, il suffit bien entendu d'échanger nblignes et 50

    Sinon, j'aime bien ta méthode Mabu dans d'autres circonstances, ca peut être bien pratique

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut
    oh, merci mabu et skip

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut
    euh donc j'ai mis ces lignes là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    **tab_ip_ul_TCP = (char**) malloc (nb_ligne * sizeof(char*));
    for(i=0 ; i<nb_ligne; i++) *tab_ip_ul_TCP[i] = (char*) malloc (50 * sizeof(char));
    pas d'erreur mais j'ai un warning :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assignment makes integer from pointer without a cast
    ça veut dire quoi svp ?

  8. #8
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Hum, deja, je sais pas ce que foutais ces etoiles ici
    Mieux vaut faire ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char **tab_ip_ul_TCP = NULL;
    int i;
    tab_ip_ul_TCP = (char**) malloc (nb_lignes* sizeof(char*));
    for(i=0 ; i<nb_lignes; i++) tab_ip_ul_TCP[i] = (char*) malloc (50 * sizeof(char));
    (j'ai édité)

    A mon avis le compilo devrait te lacher la.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut
    merci skip no more problems !

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/05/2007, 15h10
  2. tableau de chaine de caractères
    Par psgman113 dans le forum C
    Réponses: 15
    Dernier message: 22/01/2007, 18h52
  3. Pointeur, tableau et chaines de caractères.
    Par rouliane dans le forum C++
    Réponses: 8
    Dernier message: 19/12/2006, 20h27
  4. Réponses: 15
    Dernier message: 04/11/2006, 10h02
  5. [C] tableau de chaines de caractères
    Par kitsune dans le forum C
    Réponses: 18
    Dernier message: 01/04/2006, 18h18

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