2015-04-15 59 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個字符),然後(,並且必須以)後跟分隔符和"結束。必須選擇分隔符,使得終止子字符串(),分隔符")不會出現在字符串中。