1
- CHAR_BACKSLASH被定義爲 '\\' 或0x5C
變量:
- 工作目錄是C字符串
myFilePath是C字符串
int len = strlen(workingDir); char lastChar = workingDir[len - 1];
下面,myFilePath會從工作目錄 + 反斜槓形成 +字面「myfile.txt的」
在三元參數,如果沒有反斜槓,我試圖放一個反斜槓。
snprintf(myFilePath,
sizeof(myFilePath),
"%s%s%s",
workingDir,
(lastChar == CHAR_BACKSLASH) ? "" : "\\",
"myfile.txt");
如果可能的話,我想將它更改爲這樣的事情,但不知道怎麼樣,因爲它需要一個空的單引號字符,我不知道這是不允許的。
snprintf(myFilePath,
sizeof(myFilePath),
"%s%c%s",
workingDir,
(lastChar == CHAR_BACKSLASH) ? '' : CHAR_BACKSLASH,
"myfile.txt");
第一種情況對於意圖是什麼更清楚。最後一種情況不太清楚,很可能snprintf在處理字符時只比字符串長一點稍快。優化不值得缺乏可讀性。 – 2013-04-07 21:15:16
如果爲了清晰起見而將其改爲使用'\\',而不是所有情況下的十六進制代碼,該怎麼辦? – Lakey 2013-04-07 21:16:27
你有一個好點。爲了清晰起見,我將其改爲使用define(CHAR_BACKSLASH),而不是用於反斜槓的十六進制代碼 – Lakey 2013-04-07 21:21:54