2015-04-15 60 views
0

基本上,我无法弄清楚这一点,我希望我的C程序存储批处理程序的整个明文,然后插入一个文件,然后运行。C程序存储字符串中的特殊字符

我完成了我的程序,但拿着内容是我的问题。如何在字符串中插入代码并使其忽略所有特殊字符,如%s \ etc?

+1

咦?你为什么不提供一个你想要做的事情的简单例子,以及你写的代码,以及为什么代码不能满足你的需求的解释。 – mah

+2

嗨,你能否请[编辑你的问题](http://stackoverflow.com/posts/29658418/edit),以便它[包括代码](http://stackoverflow.com/help/mcve),以便我们可以看到你在说什么? – GoBusto

+0

在声明字符串中的任何字符时,如'echo C:\\ myfile.txt'和'%'字符,您需要将\字符加倍。 –

回答

1

您必须使用\转义特殊字符,您可以使用另一个反斜杠(即\\)转义反斜杠本身。

+0

有太多的字符手动去做。 – MuchMemezMuchWow

+2

@MuchMemezMuchWow你不必手动完成 - 你可以编写另一个程序来完成它。 – ace

1

正如伊恩先前提到的那样,您可以转义不允许在正常C字符串中使用的字符\;例如,换行符变为\n,双引号变为\",反斜杠变为\\

如果无论出于何种原因无法或不愿意这样做,那么如果您的解决方案必须使用C语言,那么您可能会不幸运。但是,如果您愿意切换到C++,那么您可以使用raw strings

const char* s1 = R"foo(
Hello 
World 
)foo"; 

这相当于

const char* s2 = "\nHello\nWorld\n"; 

原始字符串必须以R"随后通过任意的分界符(由任何来源字符,但括号,反斜线和间隔的开始可以是空的;最多16个字符),然后(,并且必须以)后跟分隔符和"结束。必须选择分隔符,使得终止子字符串(),分隔符")不会出现在字符串中。