青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

liyuxia713

蹣跚前行者

常用鏈接

統(tǒng)計(jì)

Algorithms

C++

最新評(píng)論

深入理解strcpy,strncpy

~對(duì)初學(xué)者屬于深入理解吧,高手請(qǐng)勿在此浪費(fèi)寶貴時(shí)間~

看到這樣一個(gè)改錯(cuò)題:
char p[5]; 
char* s="12345"
strcpy(p,s);
   cout << p << endl;
錯(cuò)誤之處是很顯然的,作為字符串字面值的"12345"會(huì)在結(jié)尾處自動(dòng)加上空字符null,從而長(zhǎng)度是6,上面的strcpy是會(huì)越界的,從而是個(gè)越界錯(cuò)誤。
問(wèn)題是我以為這樣的程序編譯的時(shí)候會(huì)出錯(cuò)呢!但是我在vc上運(yùn)行時(shí)是可以輸出正確結(jié)果的,這讓我很是納悶!后來(lái)找到了strcpy的源代碼才知原因,strcpy函數(shù)是不進(jìn)行越界處理的. 又因?yàn)閟trcpy連null一起復(fù)制,從而p能輸出正確的結(jié)果"12345"
/*The strcpy function copies strSource, including the terminating null character, to the location specified by strDestination. No overflow checking is performed when strings are copied or appended. The behavior of strcpy is undefined if the source and destination strings overlap.*/
char * __cdecl strcpy(char * dst, const char * src) 

char * cp = dst; 

while*cp++ = *src++ ) 
/* Copy src over dst */ 

return( dst ); 
}
 
貌似strcpy雖然不進(jìn)行越界處理,仍然是個(gè)挺好的函數(shù)呢,但是注意了,下面的代碼就能暴露出strcpy 的缺點(diǎn)了.
char p[5];
char *= "12345678";
strcpy(p,s);
cout 
<< p <<endl; //輸出12345678,而不是我們所設(shè)想的12345
為了不因不知s的長(zhǎng)度而犯下錯(cuò)誤,推薦使用strncpy。但是是不是用了strncpy就萬(wàn)無(wú)一失了呢?看下面的代碼:
char p[5];
char* s = "12345";
strncpy(p,s,
5);
cout 
<< p <<endl; //12345*&^(后面表示亂碼)
不是都限制個(gè)數(shù)了么?為什么后面又有亂碼?
問(wèn)題來(lái)自在上述情形strncpy是不會(huì)復(fù)制字符串s后面的null的,不是以null結(jié)束的p不會(huì)輸出正確結(jié)果的。
仍然給出strncpy的源代碼:
/*The strncpy function copies the initial count characters of strSource to strDest and returns strDest. If count is less than or equal to the length of strSource, a null character is not appended automatically to the copied string. If count is greater than the length of strSource, the destination string is padded with null characters up to length count. The behavior of strncpy is undefined if the source and destination strings overlap.*/
char * __cdecl strncpy ( char * dest, const char * source, size_t count ) 

char *start = dest; 

while (count && (*dest++ = *source++)) /* copy string */ 
count
--

if (count) /* pad out with zeroes */ 
while (--count) 
*dest++ = '\0'

return(start); 
}
 
那strncpy這么不穩(wěn)定,為何用它?strncpy經(jīng)常用于修改一個(gè)長(zhǎng)字符串中間的一部分(看出不復(fù)制null的原因了吧!),如果實(shí)在要用到上述的代碼上,就在代碼最后加上p[5] = '\0'; 吧!

posted on 2009-04-26 20:59 幸運(yùn)草 閱讀(3388) 評(píng)論(1)  編輯 收藏 引用 所屬分類: C++

評(píng)論

# re: 深入理解strcpy,strncpy 2009-12-12 14:04 小螞蟻

不是strncpy不穩(wěn)定
數(shù)組長(zhǎng)度不夠,讓strncpy越界再加個(gè)\0 ?
  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲永久免费精品| 9色国产精品| 99成人在线| 亚洲人成网在线播放| 午夜免费日韩视频| 在线综合亚洲欧美在线视频| 免费观看一区| 亚洲在线视频一区| 欧美—级在线免费片| 免费视频一区| 国产亚洲欧洲| 欧美在线视频网站| 久久久久国色av免费观看性色| 国产精品国产三级国产普通话三级| 亚洲高清三级视频| 在线成人中文字幕| 久久精品视频在线看| 久久se精品一区二区| 国产精品美女久久久久av超清| 亚洲麻豆国产自偷在线| 日韩视频在线永久播放| 免费成人小视频| 欧美黄色一区二区| 亚洲靠逼com| 欧美日韩激情网| 日韩视频国产视频| 亚洲欧美成人精品| 国产精品中文字幕欧美| 亚洲在线免费观看| 久久精品国产一区二区三| 国产欧美日韩精品在线| 久久xxxx精品视频| 久久亚洲欧美| 亚洲二区在线观看| 欧美日本国产精品| 一区二区三区 在线观看视| 亚洲欧美综合精品久久成人| 国产精品美女主播| 性18欧美另类| 欧美激情偷拍| 亚洲一区中文字幕在线观看| 国产日产高清欧美一区二区三区| 午夜精品久久久久久久蜜桃app| 久久久久国内| 日韩亚洲欧美精品| 国产精品久久97| 亚洲伊人观看| 欧美日韩成人在线视频| 99亚洲精品| 欧美在线999| 在线观看91久久久久久| 蜜臀av国产精品久久久久| 亚洲日韩欧美一区二区在线| 亚洲午夜视频在线| 国产免费一区二区三区香蕉精| 久久福利影视| 亚洲另类自拍| 久久久久久久性| aa国产精品| 激情欧美一区二区| 欧美日韩国产成人在线免费| 亚洲欧美国产一区二区三区| 美女精品网站| 亚洲一区二区三区色| 伊人一区二区三区久久精品| 欧美亚男人的天堂| 欧美成人嫩草网站| 亚洲精品在线视频| 久久免费视频在线观看| 亚洲免费电影在线| 国产一区二区高清| 欧美日韩高清免费| 久久人人爽爽爽人久久久| 夜夜嗨av一区二区三区| 欧美gay视频激情| 亚洲欧美一区二区三区在线 | 性一交一乱一区二区洋洋av| 欧美激情视频免费观看| 久久精品综合一区| 亚洲一区国产| 一本色道久久综合狠狠躁篇的优点| 国产字幕视频一区二区| 欧美午夜一区二区| 欧美精品亚洲二区| 久久综合色婷婷| 欧美一区网站| 亚洲欧美国产精品专区久久| 夜夜嗨av色综合久久久综合网 | 久久艳片www.17c.com| 一本大道久久精品懂色aⅴ| 在线欧美小视频| 国产日韩在线一区| 国产精品五月天| 国产精品r级在线| 欧美精品在线看| 欧美成人免费在线| 免费欧美在线| 美女精品一区| 久久亚洲图片| 久久一区二区三区四区五区| 久久国产精品99国产精| 欧美在线视频a| 久久国产欧美精品| 欧美尤物一区| 久久久国产精品一区二区中文| 欧美在线在线| 久久黄色小说| 久久午夜国产精品| 久久在线视频在线| 狂野欧美性猛交xxxx巴西| 麻豆国产精品va在线观看不卡| 久久久最新网址| 看片网站欧美日韩| 欧美激情视频给我| 欧美日韩国内自拍| 国产精品vvv| 国产欧美日韩精品丝袜高跟鞋| 国产日韩欧美综合精品| 尤物yw午夜国产精品视频| 在线欧美视频| 99视频+国产日韩欧美| 亚洲免费视频在线观看| 午夜精品视频在线观看| 欧美专区在线| 麻豆av福利av久久av| 欧美成人伊人久久综合网| 亚洲青色在线| 亚洲一区二区在| 久久久久久免费| 欧美高清视频| 国产精品日韩在线| 国语自产精品视频在线看| 亚洲黄色天堂| 亚洲免费影视| 你懂的网址国产 欧美| 99re6这里只有精品视频在线观看| 亚洲网站在线看| 久久午夜羞羞影院免费观看| 欧美精品v国产精品v日韩精品| 国产精品hd| 亚洲国产精品精华液网站| 亚洲午夜久久久久久久久电影院| 久久久99久久精品女同性| 欧美二区在线看| 亚洲一区二区三区精品视频| 久久综合狠狠综合久久综合88| 欧美日韩一区二区在线视频| 国产一区日韩一区| 亚洲视频大全| 久久综合久久久久88| 夜夜嗨av一区二区三区免费区| 欧美影片第一页| 国产精品av一区二区| 在线播放日韩欧美| 亚洲欧洲99久久| 最新日韩av| 久久精品日产第一区二区| 欧美婷婷久久| 亚洲黄色免费电影| 久久天天躁狠狠躁夜夜av| 亚洲精品一二三区| 久久资源在线| 国产在线视频欧美一区二区三区| 亚洲视频成人| 亚洲激情在线观看| 久久久噜噜噜久久狠狠50岁| 国产精品女人久久久久久| 亚洲麻豆国产自偷在线| 麻豆乱码国产一区二区三区| 亚洲综合三区| 欧美午夜一区二区| 99re热这里只有精品视频| 欧美成人免费网| 久久精品一区二区| 国产日韩欧美精品一区| 亚洲在线网站| av成人免费在线观看| 欧美精品免费在线观看| 亚洲精品久久久一区二区三区| 免费观看在线综合色| 欧美诱惑福利视频| 国产偷久久久精品专区| 午夜在线成人av| 亚洲嫩草精品久久| 国产精品久久久久久久一区探花| 一本色道久久精品| 亚洲精品看片| 欧美麻豆久久久久久中文| 亚洲激情六月丁香| 亚洲国产精品专区久久 | 久久精品欧美日韩精品| 国产亚洲欧美激情| 久久香蕉国产线看观看网| 欧美伊人久久久久久午夜久久久久 | 亚洲欧美视频在线观看视频| 国产精品视频导航| 午夜老司机精品| 性欧美xxxx视频在线观看| 国内成人在线| 欧美国产欧美亚洲国产日韩mv天天看完整 |