修正以下覆蓋誤差。我應該使用 sizeof(empID)-1或sizeof(empID)?我應該減去1刪除空字符? 例如:覆蓋問題+ C++中的snprintf用法
char empID[8] ;
snprintf(empID,sizeof(empID)-1, "S%05d", (char)pManager -> GetEmpID(groupID, levelID)) ;
Coverity的輸出:
調用風險函數(SECURE_CODING)[非常危險的。使用「sprintf」 時,如果執行不正確,可能會導致緩衝區溢出。因爲sprintf() 假設任意長的字符串,所以調用者必須小心,不要讓目標的實際空間溢出 。使用snprintf()替代, 或正確的精度說明符。
爲什麼不閱讀[手冊頁](http://linux.die.net/man/3/snprintf)?那裏非常清楚。 – 2012-02-01 12:11:54
Coverity報告位於您未顯示的代碼上。它與你的問題甚至是相關的,這似乎是「我如何使用snprintf()答案可能*是*」閱讀了精細的手冊「 – 2012-02-06 23:47:39