我有一段代碼將整數轉換爲c中的字符串。代碼必須在32位和64位平臺上工作。snprintf,用於整數到字符串轉換C
我解析在一個循環論證,所以我需要的malloc創建緩衝區
int tmp_integer = /*read as integer*/
char* tmp_string = malloc(20* sizeof(char)); /*enough room for the biggest integer*/
snprintf(tmp_string, 20,"%d",tmp_integer); /*can I avoid using 20 here*/
a[i - 1] = tmp_string; /*save the parsed argument for final usage*/
我的問題是: 有沒有什麼辦法讓它很好用的snprintf,或者我應該回落到的sprintf 。
我覺得使用snprintf並不是正確的做法,因爲最初我想避免緩衝區溢出,但由於整數的大小已知,所以我認爲它沒用。不過,我想知道這裏的最佳做法是什麼。
其實我決定回去,因爲到的sprintf,snprintf的在我的情況是沒有必要的。當然,我並沒有在代碼中加入21。這是爲了緩解閱讀。 – user763556
太好了。事實上,'snprintf'就派上用場了,當你處理字符串。如果不是這樣,總是有一個容易預測的緩衝區大小的上限,可以計算和足夠的空間分配,所以'sprintf'可以安全地使用。你可能會遇到一些固執地說「永遠不會使用'sprintf'的人,總是使用'snprintf'」。你通常可以忽略它們 – Shahbaz
是的,我真的得出這個結論嘿嘿。 – user763556