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 :

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';
}
Que j'appelle comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
  printf("s1 concatene avec s2 donne %s",concatenation(s1,s2));
Alors je vais expliquer le raisonnement que j'ai suivi pour que quelqu'un puisse me dire où ça coince :

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. ^^