Problème strcat (c)

Fermé
macbang - 1 juil. 2009 à 11:11
 macbang - 1 juil. 2009 à 14:17
Bonjour,
Je rencontre un petit problème avec la fonction strcat.

j'ai déclaré plusieurs chaine de caractère.
la première récupère un int converti en caractère, je l'ai déclaré ainsi :
char chaine[2]="";

la seconde récupère plusieurs concaténations successives.
char chaine_finale[20]="";

avec les variables :
int i;
char i_char[2];

j'ai donc dans mon code :
strcat(chaine,"0");
sprintf(i_char,"%d",i);
strcat(chaine,i_char);

pour l'instant pas de problème, la variable chaine contient bien les caractères que je souhaite.

Mais lorsque je concatène cette chaine avec l'autre :
strcat (chaine_final, "test_");
strcat (chaine_final,chaine);
printf ("chaine_final = %s\n",chaine_final);

voici le résultat :
chaine_final = test_

la deuxième partie (chaine) n'a pas été concaténé.
Comment puis-je faire ?

2 réponses

Il y a au moins deux erreurs majeures et tu as de la chance que ton programme ne se termine pas en 'segment fault'.
1) tu réserves seulement 2 octets dans 'chaine'; c'est bien peu pour y placer un entier (que tu as d'ailleurs oublié d'initialiser!) qui peu varier (suivant les machines) de -32000 à + 32000 (environ) soit une réservation minimale de 7 octets car il ne faut pas oublier le '0x00' de fin de chaine.
2) strcat (chaine_final, "test_"); Non !!! Il faut mettre: strcpy (chaine_final, "test_"); sinon tu ajoutes 'test_' à la chaîne 'chaine_final' (tiens ce n'est plus 'chaine_finale) qui d'ailleurs n'a pas été initialisée... !!!
Donc finalement, ça fait plus de deux erreurs ;-)
Bonne continuation.
2
merci je vais corriger ça alors !
0