基本上,我无法弄清楚这一点,我希望我的C程序存储批处理程序的整个明文,然后插入一个文件,然后运行。C程序存储字符串中的特殊字符
我完成了我的程序,但拿着内容是我的问题。如何在字符串中插入代码并使其忽略所有特殊字符,如%s \ etc?
基本上,我无法弄清楚这一点,我希望我的C程序存储批处理程序的整个明文,然后插入一个文件,然后运行。C程序存储字符串中的特殊字符
我完成了我的程序,但拿着内容是我的问题。如何在字符串中插入代码并使其忽略所有特殊字符,如%s \ etc?
您必须使用\转义特殊字符,您可以使用另一个反斜杠(即\\
)转义反斜杠本身。
有太多的字符手动去做。 – MuchMemezMuchWow
@MuchMemezMuchWow你不必手动完成 - 你可以编写另一个程序来完成它。 – ace
正如伊恩先前提到的那样,您可以转义不允许在正常C字符串中使用的字符\
;例如,换行符变为\n
,双引号变为\"
,反斜杠变为\\
。
如果无论出于何种原因无法或不愿意这样做,那么如果您的解决方案必须使用C语言,那么您可能会不幸运。但是,如果您愿意切换到C++,那么您可以使用raw strings:
const char* s1 = R"foo(
Hello
World
)foo";
这相当于
const char* s2 = "\nHello\nWorld\n";
原始字符串必须以R"
随后通过任意的分界符(由任何来源字符,但括号,反斜线和间隔的开始可以是空的;最多16个字符),然后(
,并且必须以)
后跟分隔符和"
结束。必须选择分隔符,使得终止子字符串()
,分隔符"
)不会出现在字符串中。
咦?你为什么不提供一个你想要做的事情的简单例子,以及你写的代码,以及为什么代码不能满足你的需求的解释。 – mah
嗨,你能否请[编辑你的问题](http://stackoverflow.com/posts/29658418/edit),以便它[包括代码](http://stackoverflow.com/help/mcve),以便我们可以看到你在说什么? – GoBusto
在声明字符串中的任何字符时,如'echo C:\\ myfile.txt'和'%'字符,您需要将\字符加倍。 –