Подтвердить что ты не робот

Как передать нулевой символ в аргументе командной строки в C?

Мне бы хотелось узнать, как передать нулевой символ в качестве аргумента командной строки, возможно, чтобы одна строка могла быть передана в качестве аргумента в форме:

"к\0be\0 или\0not\0то\0be\0"

И затем проанализируйте его. Однако программа будет обрабатывать эту строку как:

"к\\0be\\\\ 0 или 0not\\0то\\0be\\0"

Как я могу обойти это? Есть ли способ?

4b9b3361

Ответ 1

Вы не можете.

Программа C принимает аргументы как строки с нулевым завершением. Такая строка не может содержать нулевой символ по определению.

Если вы хотите передать нулевой символ, вы должны немного закодировать его с некоторым синтаксисом, и ваша программа на C должна затем декодировать его, интерпретируя этот синтаксис.

Ответ 2

Строки C имеют нулевое завершение, поэтому передаваемые строки, содержащие символы NUL, невозможны в C.: -P

Теперь, если вам просто нужен способ конвертировать \0 (в пользовательский ввод, т.е. "\\0" в виде строки C) в фактические символы NUL, это другое дело. В этом случае вашей программе нужен только синтаксический анализатор для обработки \0 в качестве разделителей.