Поскольку Buffer
не инициализируется, он начинается со всех 9 значений мусора.
Из наблюдаемых выходных данных 2-й, 3-й, 4-й, 5-й, 6-й, 7-й, 8-й и 2 непосредственно следующие ячейки памяти (вне массива) элементы явно 'T'
, 'T'
, 'W'
, '\0'
, '\0'
, '='
, '\0'
, '\0'
, '\0'
.
Строки поглощают все символы до тех пор, пока они не увидят символ NULL. Вот почему в каждой итерации, поскольку элементы массива назначаются один за другим, буфер печатается до той части, где присутствует мусорный NULL.
То есть строка имеет неопределенное поведение, если массив символов не заканчивается на '\0'
. Вы можете избежать этого, имея дополнительный пробел для '\0'
в конце буфера.