[SNIP]
char chaine1[]="";
cout <<"chaine1 : ";
cin >> chaine1;
[SNIP]
Et là ...le resultat me renvoi un peu n'importe quoi, les caracteres pas dans l'ordre par exemple.
Tu as du bol. Sur le linux que j'ai sous la main, c'est segmentation fault direct. Et pourquoi donc ? Rien à voir avec strcat :
http://www.eskimo.com/~scs/cclass/notes/sx4aa.htmlif the dimension is omitted, it is inferred from the size of the string initializer.
Autrement dit, la ligne char chaine1[]=""; ne fait qu'allouer un tableau de... 0 caractères (ou peut-être un quand même, pour loger le zéro teminal). Lorsque l'on tente de rentrer quelque chose là dedans, boum ! Un buffer overflow.
Tu as juste la chance d'avoir un compilo ou un os assez laxiste qui ne le signale pas. Tu jardines donc joyeusement dans la mémoire avec tes saisies et ton strcat et le résultat est... imprévisible.
Donc, un tableau de caractères statiques demande au moins une taille maximum. Et qui plus est, puisqu'on est sur NC, on n'oublie pas d'utiliser des fonctions de manipulations de chaîne robustes, pour éviter les buffer-overflows, soit, dans notre cas : strncat (méfiance avec ces trucs là, ça ne règle pas tous les problèmes, cf. le strncpy de la plupart des Unix, qui dans un cas particulier, omet le caractère terminal à la fin de la copie ! Un comble.)
Quant à savoir comment limiter le nombre de caractères saisis sur le cin pour éviter de déborder les chaînes en paramètres, ça, je ne sais pas, je connais très peu le C++... (http://forum.hardware.fr/images/perso/spamafote.gif)