欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++字符串函數(shù)之復(fù)制函數(shù)詳解

 更新時間:2016年09月04日 11:43:02   投稿:jingxian  
下面小編就為大家?guī)硪黄狢/C++字符串函數(shù)之復(fù)制函數(shù)詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

突然發(fā)現(xiàn)對字符串函數(shù)缺乏系統(tǒng)的了解,所以花了一點時間專門整理下,在此記錄之,以方便自己及有需要的人使用。

C/C++字符串函數(shù)的頭文件:string.h

復(fù)制函數(shù)主要有4個,如下:

1、char * strcpy(char* destination,const char * source);

2、char* strncpy(char* destination,const char* source,size_t num);

3、void * memcpy(void* destination,const void* source,size_t num);

4、void * memmove(void* destination,const void* source,size_t num);

功能及用法說明:

1、strcpy:將由source指針指示的C 字符串(包括結(jié)尾字符)復(fù)制到destination指針指示的區(qū)域中。該函數(shù)不允許source和destination的區(qū)域有重疊,同時,為了避免溢出,destination區(qū)域應(yīng)該至少和source區(qū)域一樣大。

2、strncpy:復(fù)制source的前num字符到destination。如果遇到null字符('\0'),且還沒有到num個字符時,就用(num - n)(n是遇到null字符前已經(jīng)有的非null字符個數(shù))個null字符附加到destination。注意:并不是添加到destination的最后,而是緊跟著由source中復(fù)制而來的字符后面。下面舉例說明:

char des[] = "Hello,i am!";

char source[] = "abc\0def";

strncpy(des,source,5);

此時,des區(qū)域是這樣的:a,b,c,\0,\0,i,空格,a,m,! 

\0,\0并不是添加在!的后面。

這里,需要注意strcpy僅僅復(fù)制到null字符就結(jié)束了。

3、memcpy:將source區(qū)域的前num個字符復(fù)制到destination中。該函數(shù)不檢查null字符(即將null字符當(dāng)作普通字符處理),意味著將復(fù)制num個字符才結(jié)束。該函數(shù)不會額外地引入null字符,即如果num個字符中沒有null字符,那么destination中相應(yīng)字符序列中也沒有null字符。同strcpy的區(qū)別:允許將source中null字符后面的字符也復(fù)制到destination中,而strcpy和strncpy則不可以。

4、memmove:同memcpy完成同樣的功能,區(qū)別是,memmove允許destination和source的區(qū)域有重疊。而其他三個函數(shù)不允許。

例子:

char str[] = "This is a test!";

memmove(str+2,str+10,4);

此時,str變成:Thtests a test!

以上這篇C/C++字符串函數(shù)之復(fù)制函數(shù)詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中strlen(),sizeof()與size()的區(qū)別

    C++中strlen(),sizeof()與size()的區(qū)別

    本文主要介紹了C++中strlen(),sizeof()與size()的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • windows 下C++生成Dump調(diào)試文件與分析

    windows 下C++生成Dump調(diào)試文件與分析

    dump文件是C++程序發(fā)生異常時,保存當(dāng)時程序運(yùn)行狀態(tài)的文件,是調(diào)試異常程序重要的方法,所以程序崩潰時,除了日志文件,dump文件便成了我們查找錯誤的最后一根救命的稻草,這篇文章主要介紹了windows 下C++生成Dump調(diào)試文件與分析,需要的朋友可以參考下
    2023-04-04
  • 淺析操作系統(tǒng)中的虛擬地址與物理地址

    淺析操作系統(tǒng)中的虛擬地址與物理地址

    本文主要介紹了操作系統(tǒng)中的虛擬地址與物理地址。在早期的計算機(jī)中,要運(yùn)行一個程序,會把這些程序全都裝入內(nèi)存,程序都是直接運(yùn)行在內(nèi)存上的,也就是說程序中訪問的內(nèi)存地址都是實際的物理內(nèi)存地址。那當(dāng)程序同時運(yùn)行多個程序時,操作系統(tǒng)是如何為這些程序分配內(nèi)存的呢
    2021-06-06
  • C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進(jìn)算法

    C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進(jìn)算法

    冒泡排序是一種簡單排序。這種排序是采用“冒泡策略”將最大元素移到最右邊。在冒泡過程中,相鄰兩個元素比較,如果左邊大于右邊的,則進(jìn)行交換兩個元素。這樣一次冒泡后,可確保最大的在最右邊。然后執(zhí)行n次冒泡后排序即可完畢
    2013-04-04
  • Effective C++ 入門學(xué)習(xí)筆記

    Effective C++ 入門學(xué)習(xí)筆記

    這篇文章主要介紹了Effective C++ 入門學(xué)習(xí)筆記,需要的朋友可以參考下
    2023-08-08
  • VSCode添加頭文件(C/C++)的實現(xiàn)示例

    VSCode添加頭文件(C/C++)的實現(xiàn)示例

    這篇文章主要介紹了VSCode添加頭文件(C/C++)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C++ 函數(shù)模板和類模板詳情

    C++ 函數(shù)模板和類模板詳情

    這篇文章主要對C++ 函數(shù)模板和類模板的相關(guān)資料的詳細(xì)介紹,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • C++實現(xiàn)帶頭雙向循環(huán)鏈表的示例詳解

    C++實現(xiàn)帶頭雙向循環(huán)鏈表的示例詳解

    這篇文章主要介紹了如何利用C++實現(xiàn)帶頭雙向循環(huán)鏈表,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • OpenCV實現(xiàn)簡單攝像頭視頻監(jiān)控程序

    OpenCV實現(xiàn)簡單攝像頭視頻監(jiān)控程序

    這篇文章主要為大家詳細(xì)介紹了OpenCV實現(xiàn)簡單攝像頭視頻監(jiān)控程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C++ vector的基本使用示例詳解

    C++ vector的基本使用示例詳解

    這篇文章主要介紹了C++ vector的基本使用,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03

最新評論