Bonsoir,
Je ne comprends pas comment faire une fonction qui renvoie un char * avec comme paramètre ( char * source,char* destination) et qui ajoute le 0 à la fin , sans utiliser de strcat.
Version imprimable
Bonsoir,
Je ne comprends pas comment faire une fonction qui renvoie un char * avec comme paramètre ( char * source,char* destination) et qui ajoute le 0 à la fin , sans utiliser de strcat.
C'est justement ce que l'on te demande, j'imagine : réécrire strcat.
Qu'est-ce qui te bloque (sois précis) ?
Bonjour
1) tu places un premier pointeur à la fin de "destination"
2) tu places un second pointeur au début de "source"
3) tu recopies le caractère du second à l'endroit du premier
4) tu incrémentes les deux pointeurs et retournes en 3 et ce, jusqu'à trouver le '\0' qui termine "source".
Sinon tu peux, dans un premier temps, écrire un clone de strlen pour avoir une première approche de la manipulation des chaines...
C'est là la différence entre "réécrire strcat()" et "faire mieux que strcat()".
Le choix de ne pas ajouter aux responsabilités de la fonction la gestion de la mémoire n'est pas une décision qui s'apprécie qualitativement, c'est une question de paradigme.
Faire mieux que strcat consisterait plutôt à - par exemple - retourner une information non redondante, comme l'adresse du caractère de fin de chaîne ou le nombre d'octets copiés.
Ok, tu veux faire le malin... donc comme la taille d'un pointeur c'est "4" je ne vois pas trop en quoi faire un realloc de 9 me permettra de stocker "Hello World" dans la nouvelle chaine :chin:
Surtout (plus sérieusement) tu ne peux faire de realloc que sur un pointeur préalablement alloué par malloc alors qu'on peut très bien invoquer strcat sur un tableau de char...
En fait je suis d'accord avec edgarjacobs et Matt_Houston qui avait mentionné "réécrire strcat" et je me suis cantonné à ça, juste ça. Accessoirement vu l'implication forte du PO dans cette discussion, je pense que j'ai bien fait ;)