Bonjour à tous.
Voici mon problème : dans le cadre d'un exercice en rapport avec mon cours, je dois reprogrammer, sans utiliser les indices de tableaux (pas de tab[i] en gros), quelques fonctions déjà existantes (strcat, strcpy, etc).
Voici mon bout de code pour la fonction de concaténation :
Que j'appelle comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void * concatenation(char *s1,char *s2) { while(*s1 != '\0') { s1++; } s1--; while(*s2 != '\0') { *s1 = *s2; s1++; s2++; } *s1 = '\0'; }
Alors je vais expliquer le raisonnement que j'ai suivi pour que quelqu'un puisse me dire où ça coince :
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("s1 concatene avec s2 donne %s",concatenation(s1,s2));
1-je parcours la première chaîne jusqu'à tomber sur le caractère de fin de chaîne '\0' ; j'avance mon pointeur de 1 vu que le type char prend un octet
2-ensuite, je recule d'un cran pour ne pas écrire après le '\0' (quoique... effet de bord ou pas, je sais plus)
3-je parcours la deuxième chaîne jusqu'à tomber sur '\0', et à chaque parcours, je mets la valeur *s2 dans la valeur *s1, et j'incrémente de 1 les deux pointeurs pour passer à l'emplacement de lettre suivant
4-pour finir, je rajoute un '\0' pour avoir une chaîne de caractères valide
Ah, initialement je déclarais la fonction en char *, mais je voyais mal ce qu'il fallait que je renvoie avec return.
Enfin voilà, merci d'avance pour votre aide. ^^
Partager