Concaténation chaînes.

Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009 - 29 sept. 2006 à 16:58
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 30 sept. 2006 à 17:28
Comment concaténer une variable de type TCHAR avec une chaîne de type "ceci est une chaine" :
J'ai essayé
TCHAR str = "une chaine";
strcat(str, "test");
 
ce qui devrait mettre la valeur "une chainetest" dans la variable mais ça ne marche pas. Je sais que "test" est de type const char et la variable wchar, ce n'est donc pas la même taille.
Merci.

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
29 sept. 2006 à 17:11
Déjà, il faut que la chaine résultat ait assez de place pour qu'on puisse ajouter autre chose.
Ensuite, utilise wcscat() pour les chaines de type wchar

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
29 sept. 2006 à 18:16
Tu inclue <tchar.h>, tu utilise _tcscat à la place de strcat, et tu entoure ta constante chaîne par la macro _T.

Exemple :
TCHAR* str = new TCHAR[1024];
_tcscpy(str, _T("Le test "));
_tcscat(str, _T("fonctionne parfaitement."));

str devrait contenir "Le test fonctionne parfaitement.".

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
30 sept. 2006 à 13:08
TCHAR str = "une chaine";
strcat(str, "test");

par :

char str[10+1] = "une chaine"; /* +1 = mémo pour ne pas oublié le 0 final.*/
strcat(str, "test");

et si tu tien à garder TCHAR :

TCHAR str[10+1] = "une chaine";

strcat(str, "test");

et include tchar.h.

++
deck_bsd

[http://deck-bsd.eurower.net]
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
30 sept. 2006 à 13:10
Ca ne marchera pas, tu aura un overflow : la taille de ta chaine n'est pas assez grande.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
30 sept. 2006 à 16:54
Un Peu archaique:


 


TCHAR str[250] = "voici une chaine";
char buf[250] = "Hello, ";
char res[250];
sprintf(res,"%s""%s",str,buf);
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
30 sept. 2006 à 17:28
ha oui mdr j'avai pasvu que la concaténation était aussi grande, enfin bon l'intention y était ;)

++
deck_bsd

[http://deck-bsd.eurower.net]
0
Rejoignez-nous