。*精度不是在 指定的格式字符串,但作爲一個 附加整數值參數 ,其具有是 格式化參數之前。我可以在兩個字符串的字符串格式中使用兩個精度'*'嗎?
#define SUFF ".txt"
#define MAX_STR 50
fileName[MAX_STR];
name ="myFile"
sprintf(fileName, "%s%s", name, SUFF); //fileName = "myFile.txt"
現在我想結合精確的字符串。
我試圖做的基本的東西(但更多的動態計算,這就是爲什麼我使用「*」)是:
sprintf(fileName, "%.*s%.*s", 46, 4, name, SUFF);
然而,即使是這樣創建一個運行時異常。
更具體地說:
sprintf(fileName, "%.*s%.*s",
MAX_STR - (int) sizeof(SUFF), (int) sizeof(SUFF),
name, SUFF);
請 - 如果它是可用的你使用'snprintf'來代替。 – dreamlax 2010-09-30 23:16:39
唯一的問題是用snprintf如果名稱碰巧很長,我們可能會丟失.txt。使用精度保證.txt將成爲字符串的一部分。 – 2010-09-30 23:39:34