как передать нулевой символ в функцию c Get? или завершите ввод символом \ 0 - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь реконструировать двоичный файл

, теперь мне нужно передать длинную строку, такую ​​как

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\0"

, и она должна быть завершена нулевым символом наконец

как передать нулевой символ в функцию Puts?

пожалуйста, помогите мне Спасибо заранее

1 Ответ

1 голос
/ 21 июня 2020

Ваш вопрос довольно непонятный. Что именно вы хотите сделать?

Почти во всех C строках функций строки "завершаются NUL". Это означает, что нет информации о длине строки, кроме байта "NUL" в конце.

И компилятор C автоматически добавляет байт NUL в конец строковых констант.

Пример: puts("Hello") на самом деле означает: puts("Hello\0").

Итак, если вы хотите знать, как передать строку с завершающим NUL в функцию C: просто передайте строку в C функция; компилятор автоматически добавит NUL-байт.

Функция puts не имеет возможности узнать «реальную» длину строки, если внутри строки есть символы «NUL»: puts("Hello\0 world") - это То же, что и puts("Hello").

Итак, если вы хотите записать байт «NUL» на вывод, вы должны использовать функцию, которая не принимает строку с завершающим NUL. Вы можете использовать функцию write или fwrite.

Пример: используйте fwrite("Hello\0 world\n",1,13,stdout) вместо puts("Hello\0 world")

...