您好,我遇到了一個問題。我在 C 方面不是很有經驗。
我正在嘗試將一個字符連接到我的路徑變數。
但是當我運行這行代碼時,我的另一個字串變數被“覆寫”或者之后表現得很奇怪。注釋掉后一切正常。我不想在這里發布整個代碼我只是想知道這一行是否運行起來不安全。
strcat(path, "/");
我也試過:
//編輯我實際上嘗試了 strcat 但后來 strncat 在撤銷更改時復制了該行//
char temp = '/';
strncat(path, &temp);
我一直堅持這一點,所以也許有人可以提供幫助。
uj5u.com熱心網友回復:
對于初學者來說,該函式strncat具有三個引數
char *strncat(char * restrict s1, const char * restrict s2, size_t n);
所以這個電話
strncat(path, "/");
不會編譯。
除了這個錯誤這個代碼片段
char temp = '/';
strncat(path, &temp);
還有一個錯誤是運算式&temp沒有指向字串。
僅當包含字串的陣列有足夠的空間容納一個字符時,才可以將字符附加到字串。例如,您可能不會更改字串文字。
如果包含字串的陣列有足夠的記憶體來容納字符,'/'那么你可以寫
strcat( path, "/" );
或者
size_t n = strlen( path );
path[n ] = '/';
path[n] = '\0';
或者正如@Barmar他在對答案的評論中正確指出的那樣,您可以使用strncat以下方式
char temp = '/';
strncat(path, &temp, 1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534150.html
下一篇:C函式回傳值最佳實踐
