Вероятно вы определили строку фиксированной длины.
Код:
int n=10;
char str[n];
Когда недозаполняете ее, то там из памяти берутся случайные значения. А когда переполняете, то есстесственно портится.
Иногда символ окончания строки может состоять из двух символов.
А ваще надо читать документацию минимально, нельзя наскоком программировать.
Берите питон, там за такими мелочами следить не требуется. Либо следите.