Как передать нулевой символ в аргументе командной строки в C?
Мне бы хотелось узнать, как передать нулевой символ в качестве аргумента командной строки, возможно, чтобы одна строка могла быть передана в качестве аргумента в форме:
"к\0be\0 или\0not\0то\0be\0"
И затем проанализируйте его.
Однако программа будет обрабатывать эту строку как:
"к\\0be\\\\ 0 или 0not\\0то\\0be\\0"
Как я могу обойти это? Есть ли способ?
Ответы
Ответ 1
Вы не можете.
Программа C принимает аргументы как строки с нулевым завершением. Такая строка не может содержать нулевой символ по определению.
Если вы хотите передать нулевой символ, вы должны немного закодировать его с некоторым синтаксисом, и ваша программа на C должна затем декодировать его, интерпретируя этот синтаксис.
Ответ 2
Строки C имеют нулевое завершение, поэтому передаваемые строки, содержащие символы NUL, невозможны в C.: -P
Теперь, если вам просто нужен способ конвертировать \0
(в пользовательский ввод, т.е. "\\0"
в виде строки C) в фактические символы NUL, это другое дело. В этом случае вашей программе нужен только синтаксический анализатор для обработки \0
в качестве разделителей.