看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) 目前是 Mac,但類 Unix 系統應該都可以 使用 sh-compatible shell,Bash 或 Zsh 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 或 Clang 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這有點偏特定系統問題,但牽涉到 C 實作,故在此板問 想要把 separator 傳入 C 程式中 [Update on 2018/05/17] 後來就造了一個輪子,自已解析 separator,效果如下: $ ./sep_parse ' ' --> <-- $ ./sep_parse 'n' -->n<-- $ ./sep_parse '\t' --> <-- $ ./sep_parse '\n' --> <-- $ ./sep_parse '\n\t' --> <-- 只用到標準函式庫的功能,這輪子至少堪用 餵入的資料(Input): 見下例 預期的正確結果(Expected Output): $ ./prog -s "\t" a b c a b c 錯誤結果(Wrong Output): $ ./prog -s "\t" a b c a\tb\tc $ ./prog -s '\t' a b c a\tb\tc 這樣會正確: $ ./prog -s $'\t' a b c a b c 但儘量不要用這個方法,至少大部分 GNU/Linux 程式不會這樣傳參數 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) 僅供參考 https://pastebin.com/bA2ZDEYv 補充說明(Supplement): C 和 C++ 板惠我良多 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.89.132 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1526480414.A.E88.html
a58524andy: $' ... ' 05/17 00:40
a58524andy: Quoted string expansion.衮his construct expands si 05/17 00:40
a58524andy: ngle or multiple escaped octal or hex values into 05/17 00:40
a58524andy: ASCII衞3]覔r袪nicodecharacters. 05/17 00:40
a58524andy: https://goo.gl/rsBMpd 05/17 00:40
AstralBrain: 這要看你用的是哪個shell 05/17 01:35
AstralBrain: 相容性最高的寫法應該是 "$(printf '\t')" 05/17 01:35
※ 編輯: Neisseria (112.104.89.132), 05/17/2018 05:09:05
yvb: '\t' 或 "\t" 的 \t 在 shell 下改按 CTRL-V TAB 可否? 05/17 12:57
yvb: 不過上述的幾種作法都無關 C 實作... 05/17 13:02
yvb: 或是你是求解把 -s 後的參數, 若看到 '\\' + 't' 轉成 '\t' ? 05/17 13:05
※ 編輯: Neisseria (203.71.94.20), 05/17/2018 13:26:55 ※ 編輯: Neisseria (60.251.46.166), 12/24/2018 16:59:52