在 C 語言裡,要建立一個字元陣列的字串,常常會使用 這個函數來做格式化的處理。但是實際上,這個函式卻不是那麼「安全」。怎麼說呢?sprintf() 的整個介面長的樣子的是:
也就是在使用前,必須要先建立好一個字元陣列的空間,再用這個函式把內容填入,下面就是簡單的例子:
int tmp = 10;char cstr[20];sprintf( cstr, "%d * %d = %d", tmp, tmp, tmp * tmp );
改用snprintf避免buffer overflow
int tmp = 10000;char cstr[20];snprintf( cstr, sizeof( cstr ), "%d * %d = %d", tmp, tmp, tmp * tmp );
回傳值 |
|
---|