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 :

matrice de chaines de caractères


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut matrice de chaines de caractères
    salut
    je cherche comment déclarer une matrice 2d de chaine de caractère d'une façon dynamique en c ?

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Citation Envoyé par info help Voir le message
    salut
    je cherche comment déclarer une matrice 2d de chaine de caractère d'une façon dynamique en c ?
    Si tu veux une matrice 2d de strings alors je pense qu'il va falloir passer par un char***.

    Si tu veux tu peux en décomposer la construction avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    typedef char* String;  // une chaîne de caractères
    typedef String* Vecteur;  // une ligne (tableau 1d) de strings
    typedef Vecteur* Matrice; // un tableau 2d de strings
    Ensuite pour l'allocation tu vois vite que pour créer une matrice nxm tu vas devoir allouer d'abord une matrice avec n vecteurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Matrice mat=(Matrice) malloc(n*sizeof(Vecteur));
    pour chaque vecteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i=0;i<n;i++)
      mat[i]=(Vecteur) malloc(m*sizeof(String));

    puis pour chaque string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for(i=0;i<n;i++)
      for(j=0;j<m;j++) {
        // au choix
        mat[i][j]=NULL;
        // ou pour une taille fixée STRMAXLEN mais dans ce cas autant définir
        // string comme un char[STRMAXLEN]
        // mat[i][j]=(String)malloc(STRMAXLEN*sizof(char));
        // ou whatever
        // mat[i][j]=init_matrice(i,j);
      }
    Pour l'initialisation tu peux imbriquer les différentes boucles.

    Pour libérer la mémoire, il faut faire tout en sens inverse, d'abord libérer tous les strings (si nécessaire), puis les vecteur, puis la matrice.

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Tu ne peux pas directement déclarer une matrice de caractère en 2D de façon dynamique .

    Par contre tu peux déclarer plusieurs matrices de caractère en 1D de façon dynamique.
    Et ensuite déclarer une matrice de pointeurs en 1D de façon dynamique.
    (Chaque pointeur pointant vers une matrice de caractère)

    Ainsi tu pourras choisir via ta matrice de pointeur la matrice de caractère voulue.
    Et dans la matrice de caractère, tu pourra choisir le caractère voulu.

    Avec cette méthode, tu pourras accéder à chaque caractère comme dans un tableau 2D (tab[ligne][colonne]) par contre si tu veux faire de l'arithmétique des pointeurs, méfie toi.

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Tu devrais également jeter un petit coup d'oeil à l'exemple de la FAQ.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    Citation Envoyé par Melem Voir le message
    Tu devrais également jeter un petit coup d'oeil à l'exemple de la FAQ.
    merci mais la FAQ traite une matrice d'entiers, je veux traiter une matrice de chaine de caractères.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    La FAQ expose le principe d'une allocation à 2 dimensions..

    A toi de faire un (petit) effort...


  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    salut !
    je cherche comment déclarer une matrice 2d de chaine de caractère
    précise si tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    matrice[i][j]='a';
    ou 
    matrice[i][j]="azerty";
    A+

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    slaut
    merci
    je veux avoir la forme
    matrice[i][j]="azerty";

  9. #9
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Ah ben dans ce cas kwariz a parfaitement raison. J'avoue que je ne voyais pas la question dans ce sens là, même si en relisant on voit en effet que c'est cela.

  10. #10
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    dans chaque exécution de ton programme le maximum de i et j est-il connu r avant de travailler sur la matrice?
    c-à-d une fois max(i) = 3 et max(j) = 8 et une autre max(i) =3 et max(j) = 5.
    dois-tu travailler sur des matrices creuses ?

    A+

  11. #11
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    merci à tous c'est vrai anacharsis kwariz à raison

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

Discussions similaires

  1. transposé d'une matrice de chaine de caractére carré
    Par maissaab dans le forum Général Python
    Réponses: 4
    Dernier message: 04/04/2011, 13h14
  2. Matrice de chaine de caractères
    Par polopolo81 dans le forum Scilab
    Réponses: 1
    Dernier message: 30/08/2010, 18h15
  3. Réponses: 5
    Dernier message: 12/01/2009, 18h47
  4. [Débutant] Matrice de chaine de caractères
    Par anael52 dans le forum MATLAB
    Réponses: 5
    Dernier message: 02/06/2008, 09h44
  5. Réponses: 11
    Dernier message: 10/03/2008, 12h49

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