strncpy與snprintf 的用法比擬。本站提示廣大學習愛好者:(strncpy與snprintf 的用法比擬)文章只能為提供參考,不一定能成為您想要的結果。以下是strncpy與snprintf 的用法比擬正文
strncpy的准確用法:
strncpy(dest, src, sizeof(dest));
dest[sizeof(dest)-1] = ‘\0';
snprintf的准確用法:
snprintf(dest, sizeof(dest), "%s", src);
strncpy的成績:
1.size必定要用sizeof(dest)或sizeof(dest)-1,弗成誤用sizeof(src).
2.手工填0. 務需要把dest的最初一個字節手工設置為0. 由於strncpy僅在src的長度小於dest時,對殘剩的字節填0.
3.機能成績。當dest長度弘遠於src時,因為strncpy會對過剩的每一個字節填0,會有很年夜的機能喪失。
4.前往值。strncpy前往dest,因此沒法曉得拷貝了若干個字節。
snprintf的成績:
1.弗成省略第三個參數"%s",隱患是,假如src中包括%,會激發core。
2.機能成績。當src長度弘遠於dest時,因為snprintf要前往src的字節數,須要掃描src,會有很年夜的機能喪失。
3.前往值。假如以後buf夠用,前往現實寫入的字符數;假如不敷用,前往將要寫入的字符數。換句話說,前往值就是傳入的字符數量。
總結:
1.snprintf應用比strncpy簡練。
2.snprintf可以獲得被拷貝的字節數。
3.兩者都有機能成績。假如src弘遠於dest,用strncpy;假如dest弘遠於src,用snprintf。