C/C++字符串函數之復制函數詳解。本站提示廣大學習愛好者:(C/C++字符串函數之復制函數詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C/C++字符串函數之復制函數詳解正文
忽然發明對字符串函數缺少體系的懂得,所以花了一點時光專門整頓下,在此記載之,以便利本身及有須要的人應用。
C/C++字符串函數的頭文件:string.h
復制函數重要有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 字符串(包含開頭字符)復制到destination指針指導的區域中。該函數不許可source和destination的區域有堆疊,同時,為了不溢出,destination區域應當至多和source區域一樣年夜。
2、strncpy:復制source的前num字符到destination。假如碰到null字符('\0'),且還沒有到num個字符時,就用(num - n)(n是碰到null字符前曾經有的非null字符個數)個null字符附加到destination。留意:其實不是添加到destination的最初,而是緊隨著由source中復制而來的字符前面。上面舉例解釋:
char des[] = "Hello,i am!"; char source[] = "abc\0def"; strncpy(des,source,5);
此時,des區域是如許的:a,b,c,\0,\0,i,空格,a,m,!
\0,\0其實不是添加在!的前面。
這裡,須要留意strcpy僅僅復制到null字符就停止了。
3、memcpy:將source區域的前num個字符復制到destination中。該函數不檢討null字符(行將null字符看成通俗字符處置),意味著將復制num個字符才停止。該函數不會額定地引入null字符,即假如num個字符中沒有null字符,那末destination中響應字符序列中也沒有null字符。同strcpy的差別:許可將source中null字符前面的字符也復制到destination中,而strcpy和strncpy則弗成以。
4、memmove:同memcpy完成異樣的功效,差別是,memmove許可destination和source的區域有堆疊。而其他三個函數不許可。
例子:
char str[] = "This is a test!"; memmove(str+2,str+10,4);
此時,str釀成:Thtests a test!
以上這篇C/C++字符串函數之復制函數詳解就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。