une trainée de merde ?
Sans lire, je paris que c´est apres une chaine :
genre tu écris : " salut" et ça te sors :
salut("&éçà_()´"_("´("´(
ou ce genre de trucs non ?
Tout simplement parce qu´une chaine DOIT se terminer par 0, le code 0, et non pas le code ASCII 0, qui vaut 48)
( regarde la table 
http://www.lookuptables.com/
Le caractere 0 est le NUL, c´est pour ça qu´on parle de NUL-TERMINATED string.
En gros, faut mettre un 0 apres ta derniere lettre :
soit tu mets :
chaine[i] = 0;
soit tu mets :
chaine[i] = ´\0´;
c´est pareil...
Sinon, ton prog finira par planter car tu n´alloues rien.
Je te conseille un :
char* t = new char[50];
par exemple, pour éviter les plantages...