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 :

Allocation d'un tableau 2D


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Par défaut Allocation d'un tableau 2D
    Bonjour,

    j'essai d'allouer un tableau à 2D en connaissant la taille d'une seule dimension.

    et sur chaque ligne je met une chaine de caractère dont je ne connais pas la taille.

    le problème et que lorsque je fais l'initialisation par une boucle for j'ai toujours la dernière chaine dans tous mon tableau.

    voici mon code :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(int argc, char *argv[])
    {
        char** Aj;
        char num[2];
        char toto[4]="Bon";
        char tmp[4];
        int i,n=7,j=5,k;
     
        Aj=(char**) malloc (n*sizeof(char*));
     
        for(i=0;i<n;++i)
           Aj[i]=(char*) malloc (sizeof(char)*j);
    	/*for(i=0;i<n;i++)
            Aj[i]="Bonjo";*/
       /* for(i=0;i<n;++i)
    		for(k=0;k<j;++k)
    			Aj[i][k] = 'a';*/
       for(i=0;i<j;i++)
       {
    	   for(k=0;k<n;++k)
    	   {
               strcpy(tmp,toto);
               itoa(i,num,10);
               strcat(tmp,num);
               Aj[i] = tmp ; 
    	   }
       } 
     
       //for(i=0;i<n;i++)
        for(i=0;i<j;++i)
    		printf("valeur dans le tableau : %s\n",Aj[i]);
     
       //for(i=0;i<n;++i)
         //  free(Aj[i]);
       free(Aj);
     
        return 0;
    }

  2. #2
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut ?
    perso je comprends pas tres bien ce que tu veux faire. Tu veux allouer un tableau de pointeur sur chaine de caractere c'est ça? Mais avec quelles chaines de caractères?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 60
    Par défaut
    Citation Envoyé par ambessa Voir le message
    Bonjour,

    j'essai d'allouer un tableau à 2D en connaissant la taille d'une seule dimension.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        int n=7,j=5;
     
        Aj=(char**) malloc (n*sizeof(char*));
     
        for(i=0;i<n;++i)
           Aj[i]=(char*) malloc (sizeof(char)*j);
     
     
    }
    Moi je vois que tu alloues un tableau de 7 lignes ayant chacune 5 colonnes.
    Me trompe peut être. Je pige pas bien ton but en fait. Le résultat que tu souhaites.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ambessa Voir le message
    j'essai d'allouer un tableau à 2D en connaissant la taille d'une seule dimension.

    et sur chaque ligne je met une chaine de caractère dont je ne connais pas la taille.
    C'est pas super clair. Ce que je comprends, c'est que tu veux créer un tableau dynamique de pointeurs sur chaines, c'est ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Entrer le nombre de chaine : 3
     
    Entrer la chaine 1 : hello
    Entrer la chaine 2 : wild
    Entrer la chaine 3 : world
    et ensuite, par exemple, on peut afficher

    c'est ça ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/02/2007, 09h26
  2. Réponses: 2
    Dernier message: 14/12/2006, 15h34
  3. Allocation mémoire et tableau
    Par Cazman dans le forum C++
    Réponses: 7
    Dernier message: 07/07/2006, 15h36
  4. Réponses: 6
    Dernier message: 26/11/2005, 19h55
  5. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42

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