Bonjour à tous,

L'exemple ci-dessous résume le problème que j'ai rencontré et dont je ne trouve pas la solution.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <string.h>
 
int
main()
{
 
  /* On veut réaliser la chaine là "deux:2" en concatenant "deux:" et "2"*/
 
  char str1[64]; /* on declare la chaine 1 */
  strcpy(str1,"deux:"); /* on remplie la variable avec "deux:" */
 
  printf("str1 (test1): %s\n",str1);
  printf("str1 (test2): %s\n",str1);
  /* on a bien les prints de "test" */
 
  char str2[1]; /* on declare la chaine dans lequelle on aura le "2" */
 
  printf("str1 (test3): %s\n",str1); /* on imprise pour voir */
 
  sprintf(str2, "%i", 2); /* on transforme 2 (int) en chaine de caracteres */
 
  printf("str1 (test4): %s\n",str1); /* on imprime encore pour voir */
 
  printf("str2 (test5): %s\n",str2); /* on imprime str2 */
 
  strcat(str1,str2); /* on concatene */
 
  printf("%s\n",str1); /* on affiche le résultat final */
 
 
  return 1;
 
}
Le résultat de l'exécution est:

str1 (test1): deux:
str1 (test2): deux:
str1 (test3): deux:
str1 (test4):
str2 (test5): 2
22euxx


On voit que le test4 est vide... je ne comprends pas. C'est le meme code, il est censé afficher str1, c'est apres l'instruction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sprintf(str2, "%i", 2); /* on transforme 2 (int) en chaine de caracteres */
je ne comprends pas pourquoi apres cette instruction, il n'y a plus rien dans str1 enfin quand on print.

Et a la fin on a donc une concaténation bizarre MErci de m'apporter de l'aide =)