Tableau de chaines de caratére

nassim1987 Messages postés 105 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 27 janvier 2014 - 6 oct. 2010 à 18:20
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 7 oct. 2010 à 10:43
bonjour, je programme en langage C,je voudrais insérer dans un tableau de caractère,je voudrais insérer un succession de chaines de caractére,je voudrais savoir comment faire pour insérer ces chaines sans ecraser celle qui avait avant (c'est à dire dans une nouvelle case),et aussi sns insérer une chaine existante,puis comment faire pour retrouver mes chaines .

Merci

2 réponses

universaliss Messages postés 5 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 17 mars 2011
7 oct. 2010 à 09:25
Bonjour, c'est la première fois que je post ici alors je vais essayer de te rep si je raconte des bêtises d'autres personnes me corrigeront surement alors je me lance !

Tu parle d'un tableau de chaines de caracteres.
3 Possibilités :

-Soit tu travailles sur un grand tableau de caractères (méthode la moins belle voir la plus moche !)
ex : char MaSuperChaine[100];
dans ce cas tu peux écrire à l'adresse MaSuperChaine pour ta première chaine

Ensuite rajouter un caractère de séparation dans MaSuperChaine[(taille de la première chaine)] et continuer avec chaine2 à l'adresse
MaSuperChaine+taille premièrechaine+1


-Soit tu travailles sur un tableau de chaine de caractère donc un tableau de tableaux (tableau a deux dimensions)
Inconvénient : il s'agit d'un tableau en c++ il doit donc être déclaré avec sa dimension si tu ne la connait pas d'avance ça exclut cette méthode.
Mais sinon cela te permet d'écrir dans MaSuperChaine[0][0] premier caractère de la première chaine
MaSuperChaine[0][1] deuxième caractère de la première chaine
...
MaSuperChaine[1][0] premier caractère de la deuxième chaine
MaSuperChaine[1][1] deuxième caractère de la deuxième chaine

-Enfin méthode que je te conseille oriente toi vers un tableau de CString voir l'objet CStringArray qui te permet d'ajouter des chaine de les retrouver facilement
(et en plus c'est fait pour ça!)

En espérant t'avoir aider

un autre avis?
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
7 oct. 2010 à 10:43
-Soit tu travailles sur un grand tableau de caractères (méthode la moins belle voir la plus moche !)
Ensuite rajouter un caractère de séparation dans MaSuperChaine[(taille de la première chaine)] et continuer avec chaine2 à l'adresse
MaSuperChaine+taille premièrechaine+1

Bof, parce que tu ne pourras pas différencier un espace de spéaration d'un espace "réel". Il suffit simplement de mettre un \0 comme séparateur. Et connaitre le nombre de chaine (donc le nombre de \0).
C'est une solution viable, mais tu as raison, elle n'est pas terrible.

-Soit tu travailles sur un tableau de chaine de caractère donc un tableau de tableaux (tableau a deux dimensions)
Inconvénient : il s'agit d'un tableau en c++ il doit donc être déclaré avec sa dimension si tu ne la connait pas d'avance ça exclut cette méthode.

Rien à voir avec le C++, non. Tu peux tout à fait faire une tableau de tableau en C. C'est d'ailleurs la meilleur solution à son problème. Donc un: "char tab[256][256];" ou mieux en dynamique "char** tab; + malloc".

-Enfin méthode que je te conseille oriente toi vers un tableau de CString voir l'objet CStringArray qui te permet d'ajouter des chaine de les retrouver facilement

Non, ce n'est ni du C, ni du C++. En C++, le string standard est le std::string. Le CString est non standard, et est contenu dans une bibliothèque externe (MFC il me semble). Comme il a posté dans le forum C, ce n'est pas la solution qui lui conviendra de toute façon.

je raconte des bêtises d'autres personnes me corrigeront surement alors je me lance !

Ce que tu as dis était quasiment juste :)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous