Обратите внимание, что строка не является массивом char
. Правильная строка - это все, вплоть до первого нулевого символа, который завершает правильную строку.
Массив, здесь name
, - это хранилище, в котором хранится строка. Строка может быть не такой длины, как размер массива, как в вашем примере, но массив должен быть способен содержать строку (включая завершающий \0
) как минимум.
Ввод "hana"
на fgets
занимает только первые 6 символов name
- h
, a
, n
, a
, \n
и \0
. Обратите внимание, что fgets
также добавляет символ новой строки, созданный нажатием, для возврата к правильной строке.
Символьные элементы в name
после элемента с \0
не назначаются с \0
.
Все, что напечатано после \0
, является просто мусором, поскольку name
не было квалифицировано как extern
или static
, содержимое не инициализируется.
Обратите внимание, что \n
и \0
не являются печатными символами
.