亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

strncpy與snprintf 的用法比較

 更新時(shí)間:2013年07月25日 09:24:47   作者:  
以下是對strncpy與snprintf的具體用法以及區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下

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. 務(wù)必要把dest的最后一個(gè)字節(jié)手工設(shè)置為0. 因?yàn)閟trncpy僅在src的長度小于dest時(shí),對剩余的字節(jié)填0.
3.性能問題。當(dāng)dest長度遠(yuǎn)大于src時(shí),由于strncpy會(huì)對多余的每個(gè)字節(jié)填0,會(huì)有很大的性能損失。
4.返回值。strncpy返回dest,因而無法知道拷貝了多少個(gè)字節(jié)。

snprintf的問題:
1.不可省略第三個(gè)參數(shù)"%s",隱患是,如果src中包含%,會(huì)引發(fā)core。
2.性能問題。當(dāng)src長度遠(yuǎn)大于dest時(shí),由于snprintf要返回src的字節(jié)數(shù),需要掃描src,會(huì)有很大的性能損失。
3.返回值。如果當(dāng)前buf夠用,返回實(shí)際寫入的字符數(shù);如果不夠用,返回將要寫入的字符數(shù)。換句話說,返回值就是傳入的字符數(shù)目。

總結(jié):
1.snprintf使用比strncpy簡潔。
2.snprintf可以獲取被拷貝的字節(jié)數(shù)。
3.二者都有性能問題。如果src遠(yuǎn)大于dest,用strncpy;如果dest遠(yuǎn)大于src,用snprintf。

相關(guān)文章

  • C++中l(wèi)ist的使用與模擬實(shí)現(xiàn)

    C++中l(wèi)ist的使用與模擬實(shí)現(xiàn)

    list相較于vector來說會(huì)顯得復(fù)雜,它的好處是在任意位置插入,刪除都是一個(gè)O(1)的時(shí)間復(fù)雜度,下面這篇文章主要給大家介紹了關(guān)于C++中l(wèi)ist的使用與模擬實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • C++實(shí)現(xiàn)模板中的非類型參數(shù)的方法

    C++實(shí)現(xiàn)模板中的非類型參數(shù)的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)模板中的非類型參數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C++11學(xué)習(xí)之右值引用和移動(dòng)語義詳解

    C++11學(xué)習(xí)之右值引用和移動(dòng)語義詳解

    c++11中引用了右值引用和移動(dòng)語義,可以避免無謂的復(fù)制,提高了程序性能。這篇文章將通過一些示例和大家聊聊右值引用和移動(dòng)語義的使用,感興趣的可以了解一下
    2023-02-02
  • C語言對磁盤文件進(jìn)行快速排序簡單實(shí)例

    C語言對磁盤文件進(jìn)行快速排序簡單實(shí)例

    這篇文章主要介紹了C語言對磁盤文件進(jìn)行快速排序簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Windows窗口消息實(shí)例詳解

    Windows窗口消息實(shí)例詳解

    這篇文章主要介紹了Windows窗口消息,以實(shí)例形式詳細(xì)羅列了Windows窗口消息,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • C語言實(shí)現(xiàn)簡易通訊錄完整流程

    C語言實(shí)現(xiàn)簡易通訊錄完整流程

    這篇文章主要為大家介紹了C語言實(shí)現(xiàn)簡易通訊錄的完整流程,每個(gè)環(huán)節(jié)都有完整代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • C++性能剖析教程之循環(huán)展開

    C++性能剖析教程之循環(huán)展開

    這篇文章主要給大家介紹了關(guān)于C++性能剖析教程之循環(huán)展開的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • C++實(shí)現(xiàn)簡單學(xué)生信息管理系統(tǒng)

    C++實(shí)現(xiàn)簡單學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 最新評論