Petit problème avec strcat [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
3 juillet 2009
-
Messages postés
14
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
3 juillet 2009
-
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

Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Bonjour,

Peux-tu donner un exemple complet qui ne fonctionne pas ?

Voici ce que j'ai testé:

#include<stdio.h>
#include<string.h>

int main() {

  char chaine[2]="";

  char chaine_final[20]="";

  int i = 2;
  char i_char[2];

  strcat(chaine,"0");
  sprintf(i_char,"%d",i);
  strcat(chaine,i_char);

  strcat (chaine_final, "test_");
  strcat (chaine_final,chaine);
  printf ("chaine_final = %s\n",chaine_final);

  return 0;
}

Cela m'affiche : chaine_final = test_02
Ce qui me semble correct.

En revanche, comprends-tu le comportement du programme suivant ?

#include<string.h>
#include<stdio.h>

int main() {
  int i;
  char i_char[2] ;

  i = 421 ;
  sprintf(i_char, "%d", i);

  printf("i: %d\ni_char: %s\n", i, i_char);

  return 0;
}

Voici ce qu'il m'affiche :

i: 49
i_char: 421

Bonne prog,
Messages postés
14
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
3 juillet 2009

j'ai remplacé le premier strcat par un strcpy et cela marche maintenant...
strcpy (chaine_final, "test_");