Erreur sémantique lors de la concaténation de deux chaines de caractères
Bonjour à tous,
J'ai pour les cours à expliquer le fonctionnement d'un bout de code, j'en comprend bien le sens mais j'ai une erreur alors que je ne devrais pas en avoir.
La ligne qui fait planter le programme est la ligne, je ne comprends pas pourquoi :/
Code:
memmove (dest+ l_dest, ajout, nb_carac_max - l_dest);
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
int main()
{
char tab1[10] = "Coucou, ";
char tab2[40] = "tu veux voir ma paire de lunette ?";
// On créé deux tableau et l'on va concaténer le premier au second.
concat(tab1,tab2,70);
cout<< tab1;
// On affiche la concaténation du tableau 1
return(0);
}
/*Fonction cacaténer
Elle permet de concaténer une chaîne de caractère 2 à une chaine de caractère 1 afin d'obtenir un seul tableau.
*/
char* concat(char *dest, const char *ajout, int nb_carac_max)
{
int l_dest= strlen(dest);
int l_ajout= strlen(ajout);
if( nb_carac_max <= 0 || nb_carac_max > l_dest + l_ajout)
{
nb_carac_max= l_dest+ l_ajout;
}
if( nb_carac_max > l_dest)
{
memmove (dest+ l_dest, ajout, nb_carac_max - l_dest);
}
dest[nb_carac_max] = '\0';
return dest;
} |
Questions :
Pour le prof écrit "return dest;" et non pas "return (dest);" ?