Вам нужно пять символов для хранения «This» и три символа для «is», потому что каждая строка заканчивается нулем. (Бонусный балл: вам нужно восемь, чтобы хранить «Это»)
Необработанная память в course
будет выглядеть следующим образом:
Code[0] 'T'
Code[1] 'h'
Code[2] 'i'
Code[3] 's'
Name[0] 'i'
Name[1] 's'
Поскольку на course.Code
нет конечного нуля, printf
продолжит печать. Он не может знать, что вы хотели, чтобы он остановился после четырех символов. Тот факт, что вы не получили нечитаемый мусор после «Thisis», во многом зависит от удачи и / или настроек компилятора.