如何在C中的命令行参数中传入空字符?

时间:2010-02-17 18:23:59

标签: c command-line escaping

我仍然想知道如何传入null字符作为命令行参数,也许这样可以将单个字符串作为参数传递到表单中:

  

“来\ 0BE \ 0or \ 0not \ 0℃至\ 0BE \ 0”

然后解析它。 但是程序会将此字符串视为:

  

“来\\ 0BE \\ 0or \\ 0not \\ 0℃至\\ 0BE \\ 0”

我该如何解决这个问题?有什么办法吗?

2 个答案:

答案 0 :(得分:17)

你不能。

C程序接收参数为零终止字符串。根据定义,这样的字符串不能包含空字符。

如果要传递空字符,则必须使用某种语法对其进行某种程度的编码,然后您的C程序必须通过解释该语法对其进行解码。

答案 1 :(得分:6)

C字符串以空值终止,因此在C. :-P

中无法传递包含NUL字符的字符串

现在,如果您只想要一种方法将\0(在用户输入中,即"\\0"转换为C字符串)转换为实际的NUL字符,那就另当别论了。在这种情况下,您的程序只需要一个解析器来将\0视为分隔符。