begin process at 2012 05 30 16:32:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

remplir un tableau avec des chaines de caractères (C)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

remplir un tableau avec des chaines de caractères (C)

jeudi 29 décembre 2005 à 13:22:18 | remplir un tableau avec des chaines de caractères (C)

djibfr

Bonjour à tous! Alors voila, j'ai un petit problème tout bête mais je n'arrive pas à la résoudre et mes recheches ne m'ont pas trop éclairé. Je souhaite remplir un tableau à 2 dimensions char tableau[][]. Je connais la taille maximale des chaines que je souhaite mettre dans le tableau : longueur_max=10 Mais je ne sais pas à l'avance combien de chaines différentes je vais devoir entrer dans mon tableau. Je récupère cette information au cours de l'exécution: int nb_chaine. J'ai donc déclaré un tableau: char tableau[nb_chaine][longueur_max]. Jusque là, pas de problèmes! Le hic c'est que je ne sais pas comment le remplir avec mes différentes chaines. Ces chaines sont contenues dans une liste chainée que je parcours du début à la fin en pointant sur le champ où se trouve la chaine. Pouvez vous me renseigner sur la manière de remplir ce tableau? (ou peut-être connaissez vous des liens qui pourraient m'éclairer?) Je vous remercie par avance!! Djib
jeudi 29 décembre 2005 à 13:34:37 | Re : remplir un tableau avec des chaines de caractères (C)

vecchio56

Administrateur CodeS-SourceS
Tu les remplis avec strcpy (tu copie chaque chaine une par une) Par contre si char tableau[nb_chaine][longueur_max] marche avec ton compilo, ce sera pas forcément le cas. Normalement les indices pour la déclaration de tableau doivent être des constantes
jeudi 29 décembre 2005 à 14:27:24 | Re : remplir un tableau avec des chaines de caractères (C)

DeAtHCrAsH

Ton tableau doit au moins avoir la premiere dimension de connue pour faire simple, sinon tu vas te prendre la tete avec les réallocations et le tralala...

Pour ce faire fixe un indice max pour le nombre de chaines que tu puisses avoir et alloue les chaines au fur et a mesure.

Exemple :

#define MAX_STR 64

char *myTab[MAX_STR]
...

for(i=0;i<nb_chaine;i++)
{
   printf("\nVeuillez entrer la chaine numéro %i : ", i);
   myTab[i] = (char *) malloc(longueur_max);
   scanf("%s", myTab[i]);
}


A toit d'adapter le code en fonction de tes besoins. N'oublie pas de désallouer l'espace mémoire en fin de traitement.

Shell

jeudi 29 décembre 2005 à 14:37:17 | Re : remplir un tableau avec des chaines de caractères (C)

vecchio56

Administrateur CodeS-SourceS
Il a réussi a faire char tableau[nb_chaine][longueur_max], il n'y a donc pas besoin d'allocation dynamique ici
jeudi 29 décembre 2005 à 14:47:10 | Re : remplir un tableau avec des chaines de caractères (C)

ctx_man

Je confirme ce que vecchio56 dit : en C on ne peut pas allouer de tableau lorque l'on ne connait pas la taille a la compilation. Pour ce faire tu peut faire ceci :

char **Tableau;
char *Tab;
long i;

Tableau = (char**)malloc(nb_chaine * sizeof(char*));
i = 0;
while(i < nb_chaine)
{
   Tableau[i] = (char*)malloc(longueur_max);
   strncpy(Tableau[i], /*ta source*/, longueur_max - 1);
   Tableau[i][longueur_max - 1] = 0;
   i++;
}
/*ne pas oublier de liberer la emoire une fois que tu ne t'en sert plus*/
i = 0;
while(i < nb_chaine)
{
   if(Tableau[i])
      free(Tableau[i]);
   i++;
}
free(Tableau);

Tu remarquera que j'ai préférer utiliser strncpy qui permet de copier un nombre preci d'élément. Cela evite que si ta source fait 30 lettres tu en copie 30 aussi. Je force le 0 en fin de chaine pour la rendre utilisable car les strncpy et strcpy ne copient pas le \0. (possibilitée d'utiliser calloc(1, longueur_max) ce qui permet d'allouer une zone memoire comme malloc, mais en la mettant à 0)

Le travail c'est la santé, ne rien faire c'est la préservé !!!
jeudi 29 décembre 2005 à 14:53:56 | Re : remplir un tableau avec des chaines de caractères (C)

vecchio56

Administrateur CodeS-SourceS
tableau[nb_chaine][longueur_max] ou nb_chaine n'est pas une constante On remarque que gcc (MinGW) accepte de faire ceci, mais pas VC++
jeudi 29 décembre 2005 à 14:54:19 | Re : remplir un tableau avec des chaines de caractères (C)

DeAtHCrAsH

vecchio56> Ce n'est qu'une autre solution a son problème, puis autant faire plus propre et moins spécifique

Shell
jeudi 29 décembre 2005 à 15:11:33 | Re : remplir un tableau avec des chaines de caractères (C)

vecchio56

Administrateur CodeS-SourceS
En quoi c'est moins spécifique?
jeudi 29 décembre 2005 à 15:22:33 | Re : remplir un tableau avec des chaines de caractères (C)

DeAtHCrAsH

Spécifique au compilateur!
GCC = VC7 = Déclaration des dimensions obligatoires

Autant coder pour la majorité des compilateurs plutot qu'un.
Mais bon chacun sa vision des choses.

Shell
jeudi 29 décembre 2005 à 15:27:59 | Re : remplir un tableau avec des chaines de caractères (C)

vecchio56

Administrateur CodeS-SourceS
Moi ma vision c'est que de les compilateurs ont un peu chacun leur norme donc je choisis d'abord le compilateur et puis je l'exploie pour avoir le meilleur code

1 2

Cette discussion est classée dans : chaine, tableau, remplir, chaines, caractères


Répondre à ce message

Sujets en rapport avec ce message

Remplir d'un tableau avec des chaines de characteres sour borlandc++ builder [ par sirvincent ] bonjour, comme marque dans le titre j'aimerais savoir comment on fait pour remplir un tableau avec des chaines de characteres, kel objet faut'il utili tableau de chaines de char [ par JaguiJaguar ] Salut, je suis etudiant.je dois réaliser un prog en c qui lit une chaine de char, la stocke dans la premiere ligne d'un tableau char *tab[n]où n est l Chaines de caractères C++ [ par Scalpweb ] Bonjour à tous. Je suis un programmeur VB qui essaye d'apprendre le C++. En VB, je connais de nombreuses instrcutions pour gérer les chaines de caract Diviser une chaine de caractères en 3 chaines de caractères [ par rico77200 ] A la base je dipose d'un fichier .txt dont le contenu est :apprenti1;ti1;te1apprenti2;ti2;te2apprenti3;ti3;te5apprenti4;ti4;te4apprenti5;ti5;te5Je sou les chaines de caractères dans C [ par hzocm ] Bonjour, Je voudrais copier un fragment de la chaine A, comment faire?? ex: A = hello, je suis une chaine je veux copier de la position 3 à 5 --> j'a chaines de caractères dans un tableau char a 2 dimensions [ par deck_bsd ] Bonjour a tous, voila J'ai un fichier qui contient des mots (1sur une ligne différente) et je voudrai bien copier chacun de ces mots dans un tableau D'une AnsiString à un Tableau de char [ par sevenace ] Bonjour à tous, Mon AnsiString provient d'un EditBox. Je récupère le nombre de caractères comme ça:     AnsiString chaine = EditChaine->Text;     i Chaines de caractères [ par Roro8883 ] Salut,je suis complètement perdu et embrouillé dans les chaînes de caractères en C++ !!!!Comment est-ce que je peux faire pour savoir, dans une chaine analyse syntaxique [ par fadiam ] Bonjour à tous. je cherche à réaliser une fonction qui modifie une chaine de caractères.elle n'accepte que les "chiffres" de 0 à 9 et quelques autres convertir tableau d'entier en chaine de caractere [ par bosmal ] bonjour, comment feriez vous pour transformer un tableau d'entier (int tab[8192]) en une chaine de caractere. ou autrement y a t il une fonction qui p


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales