ATTACHER DEUX CHAR*

BossMan - 16 juil. 2001 à 12:24
PJulot
Messages postés
29
Date d'inscription
dimanche 8 juillet 2001
Statut
Membre
Dernière intervention
30 octobre 2003
- 25 juin 2004 à 03:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/9195-attacher-deux-char

PJulot
Messages postés
29
Date d'inscription
dimanche 8 juillet 2001
Statut
Membre
Dernière intervention
30 octobre 2003

25 juin 2004 à 03:27
Trois ans que j'ai posté ce truc lol, je pense avoir progressé un tit peu quand même maintenant :)
Ah! Quel horreur ! C'est moche ce que tu as fais là!!!
Lorsque tu écris :
char*buffer = new char;
tu alloues de la mémoire pour un seul caractère ce qui est complètement faux car la taille de la nouvelle chaîne de caractères dépend de la taille des deux chaînes passées en paramètre.
Donc il faut écrire :
int Size = strlen(lpStr1) + strlen(lpStr2) + 1;
char* buffer = new char[Size];

Mais attention!! Car tu retourne pointeur sur l'adresse de la nouvelle chaîne de caractères qui vient d'être allouer. Ce qui veux dire qu'il ne faudra pas oublier de désallouer lorsque tu n'auras plus besoin de cette chaîne. Ceci afin d'éviter les Memory Leak.
Après une allocation avec l'opérateur new vient toujours une désallocation avec l'opérateur delete.
De plus il existe d'autres manières plus simples de concater deux chaînes de caractères! Conseil réfléchi bien avant de mettre ton code source. Car ça ne sert à rien d'apprendre de la merde aux débutants.
#include <string.h>

strcat(Chaine1, Chaine2);

Copie Chaine2 à la suite de Chaine1.


strncat(Chaine1, Chaine2, 5);

Copie les 5 premiers caractères de Chaine2 à la suite de Chaine1.

strcpy(Chaine1, Chaine2);

Supprime le contenue(ou valeur) de Chaine1 et le remplace par le contenue(ou valeur) de Chaine2.

strncpy(Chaine1, Chaine2, 5);

Supprime le contenue(ou valeur) de Chaine1 et le remplace par les 5 premiers caractères de Chaine2.

Etc...


C'est juste un petit ajout, rien de plus :)
Merci mec !!!
Je croyais vraiment ne jamais réussir a faire un truc pareil ! C'est coul