2014-09-01 74 views
-2

我的意圖是從八進制形式的命令行插入一個字符,例如, \064(char'4'),並且fgets將它解釋爲echo所做的正確字符,而不是事先添加額外的'\'\\064以便讀取反斜槓和數字本身。停止fgets在C中轉義''(所以我可以輸入八進制形式)

我這樣做的動機是,我可以輸入沒有鍵盤等值的特殊字符,而且我不能粘貼,例如分別爲\021\035,設備控制1和組分隔符。

(字符必須從命令行輸入;我不能更改代碼)。

+2

反斜槓只在字符和字符串轉義字符。 – 2014-09-01 06:11:13

+0

那麼你的問題是什麼?如何在命令行中輸入特殊字符?如果你不能改變代碼,那麼我認爲這是一個關於如何處理你的shell中的特殊字符的實際問題? – 2014-09-01 06:11:52

+0

此外,沒有任何輸入函數會對輸入進行任何類型的解析(除了在文本模式下打開文件時可能的行處理翻譯除外)。如果你想輸入特殊字符,你必須使用終端/命令行程序。 – 2014-09-01 06:13:14

回答

1

此功能不是內置於fgets(或標準庫中的任何其他功能)。如果你需要它,你必須自己實現它(一種方法是在循環中調用getc,檢測反斜槓和下列字符,並計算八進制值),或者你需要找到一個可以實現它的庫,並使用它。

如果您需要在命令行中解析反斜槓,則可能有更簡單的方法,具體取決於您使用的是哪個操作系統和哪個shell。例如,下面的擊命令調用./myprogargv[1] = "[email protected]"

./myprog $'A\001B'