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 :

tableau de chaîne de caractères


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut tableau de chaîne de caractères
    Bonjour, j'aimerais me faire un tableau de chaine de caractères. Sur la FAQ, la page
    http://c.developpez.com/faq/c/?page=...S_string_array m'a donné la solution. Mais j'aimerais (histoire d'apprendre) avoir un tableau dynamique. J'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    const unsigned int myrep=11;
    char * myrep[100]=malloc(nbrep*sizeof(*myrep));
    if(myrep==NULL)
    {
      MEMERROR;
      exit(EXIT_FAILURE);
    }
    et là j'ai une erreur qui me dit

    error: initialisation invalide
    Savez-vous pourquoi ? Merci

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Tu voulais sans doute écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const unsigned int nbrep=11;
    Ensuite, pourquoi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * myrep[100]=malloc(...)
    ?
    Ca serait plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * myrep = malloc(...)

  3. #3
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    C'est aussi dans la fac C la réponse
    http://c.developpez.com/faq/c/?page=...bleau_2D_alloc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * myrep[100]=malloc(nbrep*sizeof(*myrep));
    Il y a du mélange d'idées dans cette ligne. lol

  4. #4
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Ensuite, pourquoi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Code:
    char * myrep[100]=malloc(...)
    ?
    Parce qu'il est parti dans l'idée de faire un tableau de chaîne de caractères...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Bonjour, merci pour vos réponses.
    Je suis parti dans l'idée de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * myrep[100]=malloc(...)
    car je sais que mes chaines de caractères font moins de 99 caractères (+1 pour le \0). Voilà. C'est un peu "l'équivalent" du

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char toto[100]="bonjour"
    et du

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * toto="bonjour"
    Merci.

  6. #6
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    D'après le code de la FAQ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /* METHODE 1 */
    char **tab;
     
    /* Allocation de la 1er dimension */
    tab = malloc ( sizeof(*tab)  *  taille);
    /* Allocation des tableaux */
    for (i=0; i<taille; i++)
    {
       tab[i] = malloc ( sizeof(**tab) * taille2);
    }
    taille représente le nombre de chaines de caractères sur lesquelles tu alloues un pointeur.
    Et taille2 réponds à cela:
    car je sais que mes chaines de caractères font moins de 99 caractères (+1 pour le \0).
    Donc la taille de la chaine sur laquelle tu pointes.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Salut, oui, j'avais compris mon erreur avec les précédents posts : la taille de la 2e dimension n'était pas allouée. J'avais mélanger tableau 2D et tableau de chaine de caractères.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/04/2008, 20h48
  2. Tableau de chaînes de caractères
    Par inh40 dans le forum C++
    Réponses: 15
    Dernier message: 15/04/2008, 17h56
  3. Réponses: 13
    Dernier message: 18/07/2007, 09h01
  4. Tableau de chaînes de caractères
    Par sone47 dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/02/2007, 14h54
  5. Tableau de chaînes de caractères
    Par mac1 dans le forum Langage
    Réponses: 3
    Dernier message: 15/01/2006, 13h18

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