C/C++字符串函數(shù)之復(fù)制函數(shù)詳解
突然發(fā)現(xiàn)對字符串函數(shù)缺乏系統(tǒng)的了解,所以花了一點(diǎn)時間專門整理下,在此記錄之,以方便自己及有需要的人使用。
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)容了,希望能給大家一個參考,也希望大家多多支持我們。
上一篇:淺談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配
欄 目:C語言
下一篇:C語言中結(jié)構(gòu)體(struct)的幾種初始化方法
本文標(biāo)題:C/C++字符串函數(shù)之復(fù)制函數(shù)詳解
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2056.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文