Поскольку sizeof()
возвращает объем памяти a
, который равен 1000.
a
создано в стеке, и его содержимое не определено.После scanf()
только первая часть этого стека мусора перезаписывается.
Вам нужно сделать write(fd, a, strlen(a))
или strlen(a) + 1
, если вы хотите также написать разделитель строки C \0
, которыйдобавляется в конец a
.
Пожалуйста, проверьте возвращаемые значения op open()
, scanf()
и write()
, чтобы убедиться, что все шаги выполняются без ошибок.См. Справочные страницы для их возвращаемых значений.