2012-03-15 23 views
0

如果我的字符串包含:fprintf中和的fputs字符串中忽略「」,而其寫入文件

a="abd\\aa\[1\]\\" 

如果我嘗試將它寫入使用fputsfprintf文件,寫入以下到文件:

"abd\aa[1]\" 

我想要"abd\\aa\[1\]\\"寫入文件。我怎樣才能做到這一點?

+0

你怎麼輸入字符串? – moooeeeep 2012-03-15 10:51:30

+0

命令行輸入到C代碼 – 2012-03-15 11:20:29

+0

輸入是命令行輸入到C代碼 – 2012-03-15 11:22:09

回答

1

\字符是一個特殊字符。試着這樣說:

a = "abd\\aa[1]\\"; 

編輯

如果你想"abd\\\\aa\\[1\\]\\\\"被寫入文件,你必須每個反斜槓加倍:

a = "abd\\\\\\\\aa\\\\[1\\\\]\\\\\\\\"; 
+0

問題是如果輸入中有5個連續的反斜槓,我想所有的五個都在文件中 – 2012-03-15 10:35:59

+0

因此輸入不在我的手中。因此,您必須將要寫入文件的每個反斜槓加倍。我會更新我的答案。 – Constantinius 2012-03-15 10:40:05

+0

如何做到這一點,這種情況下a =「{\\ [}」你不能檢查,如果在這種情況下是否有'\' – 2012-03-15 11:01:07

1

使用雙\,因爲\是轉義字符:

a = "abd\\aa[1]\\" 
+0

問題是輸入不在我手中如果有5個連續反斜槓在輸入我想要所有五個在文件中 – 2012-03-15 10:37:00

2

你要逃脫你\,像這樣:

printf("abd\\a[1]\\"); 

否則printf將打印\a這是BEL字符。

0

我想"abd\\\\aa\\[1\\]\\\\"到寫入文件。

只需加倍反斜槓的數量。

fprintf(fp, "abd\\\\\\\\aa\\\\[1\\\\]\\\\\\\\"); 
0

當您將'\'放入字符串中時,下一個字符將被忽略。如果您在'\'之前放置'\',秒功能將被忽略並打印。