begin process at 2008 07 05 07:32:49
1 205 059 membres
45 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : concatènation de char [ Divers / Débutant(e) ] (nord666)

concatènation de char le 12/05/2008 23:43:59

nord666
Salut,

J'aimerais pouvoir concatèner des char. Voici ce que je veux faire :


int i = 0; //Peut être variable. Ce n'est que pour l'exemple
char * charConcat = "Personne #" + (i ± '0'); //Il y a un ± car je ne me rappele plus lequel il faut utiliser pour transformer un int en char.


Je voudrais que dans charConcat  il y est la chaîne "Personne #0".

Ps.: Certains me conseilleront d'utiliser la librairy String mais je ne peut pas l'utiliser.

Merci à tous!

Re : concatènation de char le 12/05/2008 23:50:16

Pistol_Pete
Réponse acceptée !
Salut
Essaye plutot la fonction strcat.
Si tu veux pouvoir utiliser la concaténation avec le +, il faux que tu utilises la classe CString.


A+
Mon site internet : [ Lien ]


Re : concatènation de char le 13/05/2008 00:03:59

SAKingdom
Membre Club
char  charConcat[16] = "Personne #";

Ne pas oublier de réserver la mémoire nécessaire.

C++ (@++)


Re : concatènation de char le 13/05/2008 02:26:25

jfrancois
Réponse acceptée !
Bonsoir,

Les fonctions de traitement de chaînes de caractères str???() ne fonctionnent qu'avec des chaînes de caractères ! Une chaîne de caractères est un tableau de caractères contenant les caractères de la chaîne suivis d'un zéro binaire (le terminateur) ! Il est donc hors de question de concaténer un caractère avec la fonction strcat() (il n'y a pas ce terminateur derrière le caractère et donc strcat() va concaténer jusqu'à ce qu'elle en rencontre un en mémoire).

Il y a 3 possibilités sans passer par une classe de gestion de chaînes de caractères :

1) Placer le caractère directement dans la chaîne de caractères :
char charConcat[16] = "Personne #?";
charConcat[10] = i + '0'; // remplace le ?
(valable ici que pour 1 chiffre à placer !)

2) Transformer le caractère en chaîne de caractères pour pouvoir concaténer :
char charConcat[16];
char charIndex[2];
charIndex[0] = i + '0';
charIndex[1] = 0; // terminateur
strcpy(charConcat,"Personne #");
strcat(charConcat,charIndex);
(valable ici que pour 1 chiffre à placer !)
strcpy(charConcat,"Personne #");
strcat(charConcat,charIndex);
peut s'écrire aussi :
strcat(strcpy(charConcat,"Personne #"),charIndex);


3) Formater directement dans la chaîne réceptrice :
char charConcat[16];
sprintf(charConcat,"Personne #%d",i);
(valable quelque soit le nombre de chiffres à placer !)

Jean-François


Re : concatènation de char le 13/05/2008 03:04:34

SAKingdom
Membre Club
Je pencherais pour:
char charConcat[32] = "Personne #";
itoa(id, &charConcat[10], 10);

C++ (@++)


Re : concatènation de char le 13/05/2008 10:03:02

jfrancois
C'est une autre possibilité de formatage direct comme avec sprintf() mais en initialisant une partie de la chaîne à la déclaration de celle-ci et en repérant la position de la chaîne à placer !

L'avantage du sprintf() c'est que tout se passe en une instruction et qu'il n'y a pas de position à repérer. Et si la chaîne à créer comportait quelque chose derrière le nombre (comme "Personne #1#") ça marche aussi, pas avec les autres méthodes.

Jean-François


Re : concatènation de char le 13/05/2008 15:08:59

SAKingdom
Membre Club
Mais l'inconvénient c'est qu'il faut tout recopier à chaque fois dans le buffer. De plus, le fais que sprintf traite des regex ralentie donc le traitement.

"Et si la chaîne à créer comportait quelque chose derrière le nombre (comme "Personne #1#") ça marche aussi, pas avec les autres méthodes."

En effet. Cependant, on peut bien se bricoler un itoa retournant un pointeur sur fin de chaine. Dans ce cas, aucun problème à ce niveau.

C++ (@++)


Re : concatènation de char le 13/05/2008 19:57:04

nord666
Merci à tous pour vos merveilleux conseils pour mon problème!


Classé sous : int, utiliser, char, concatènation, charconcat

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS