str[1] = str[1] + 'c'
делает '2' + 'c'
, что не то же самое, что 2 + 'c'
.
В ascii '2'
равно 50
, тогда как 'c'
равно 99
.
Его сумма 149
, которая не находится в диапазоне ASCII (0-127), поэтому отображаемый символ зависит от используемого вами расширенного ASCII (возможно, ò
).
Если вы хотите иметь 2 + 'c'
, вы должны сделать str[1] = str[1] + 'c' - '0'
в вашем случае.