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

liyuxia713

蹣跚前行者

常用鏈接

統計

Algorithms

C++

最新評論

深入理解strcpy,strncpy

~對初學者屬于深入理解吧,高手請勿在此浪費寶貴時間~

看到這樣一個改錯題:
char p[5]; 
char* s="12345"
strcpy(p,s);
   cout << p << endl;
錯誤之處是很顯然的,作為字符串字面值的"12345"會在結尾處自動加上空字符null,從而長度是6,上面的strcpy是會越界的,從而是個越界錯誤。
問題是我以為這樣的程序編譯的時候會出錯呢!但是我在vc上運行時是可以輸出正確結果的,這讓我很是納悶!后來找到了strcpy的源代碼才知原因,strcpy函數是不進行越界處理的. 又因為strcpy連null一起復制,從而p能輸出正確的結果"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雖然不進行越界處理,仍然是個挺好的函數呢,但是注意了,下面的代碼就能暴露出strcpy 的缺點了.
char p[5];
char *= "12345678";
strcpy(p,s);
cout 
<< p <<endl; //輸出12345678,而不是我們所設想的12345
為了不因不知s的長度而犯下錯誤,推薦使用strncpy。但是是不是用了strncpy就萬無一失了呢?看下面的代碼:
char p[5];
char* s = "12345";
strncpy(p,s,
5);
cout 
<< p <<endl; //12345*&^(后面表示亂碼)
不是都限制個數了么?為什么后面又有亂碼?
問題來自在上述情形strncpy是不會復制字符串s后面的null的,不是以null結束的p不會輸出正確結果的。
仍然給出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這么不穩定,為何用它?strncpy經常用于修改一個長字符串中間的一部分(看出不復制null的原因了吧!),如果實在要用到上述的代碼上,就在代碼最后加上p[5] = '\0'; 吧!

posted on 2009-04-26 20:59 幸運草 閱讀(3398) 評論(1)  編輯 收藏 引用 所屬分類: C++

評論

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

不是strncpy不穩定
數組長度不夠,讓strncpy越界再加個\0 ?
  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区二区三区在线观看网站 | 欧美国产精品久久| 伊人久久久大香线蕉综合直播| 久久久www| 久久久久久久久久久久久9999| 狠狠综合久久| 欧美韩日一区二区三区| 欧美精品午夜视频| 亚洲永久免费| 欧美一级久久久| 在线精品一区二区| 亚洲三级影院| 国产精品―色哟哟| 久久婷婷影院| 欧美另类亚洲| 久久成人精品无人区| 久久亚洲春色中文字幕| 亚洲最新色图| 亚洲欧美成人一区二区在线电影| 国产在线拍偷自揄拍精品| 免费欧美电影| 欧美日韩在线电影| 久久人91精品久久久久久不卡 | 日韩视频在线免费| 国产日韩精品在线| 亚洲国产福利在线| 国产麻豆91精品| 欧美99在线视频观看| 国产精品夫妻自拍| 国产午夜久久久久| 亚洲国产高潮在线观看| 国产精品影音先锋| 欧美激情视频网站| 国产欧美日韩亚州综合| 亚洲国产合集| 黄色精品网站| 在线视频一区观看| 亚洲精品欧美精品| 久久爱91午夜羞羞| 亚洲男人第一av网站| 欧美a级在线| 久久久精品一区| 国产精品国产自产拍高清av| 亚洲电影中文字幕| 黄色一区三区| 性娇小13――14欧美| 亚洲视频一区在线| 女生裸体视频一区二区三区| 久久精品国内一区二区三区| 国产精品高潮在线| 亚洲六月丁香色婷婷综合久久| 影院欧美亚洲| 久久精品成人一区二区三区蜜臀| 午夜视频一区二区| 香蕉久久精品日日躁夜夜躁| 亚洲桃花岛网站| 欧美日本免费一区二区三区| 欧美国产日本高清在线| 在线观看不卡| 久久久久国产精品一区| 久久久午夜精品| 国产欧美亚洲一区| 亚洲一区二区三区中文字幕| 亚洲婷婷综合色高清在线 | 亚洲综合电影| 香蕉亚洲视频| 国产免费成人av| 亚洲欧美日韩国产一区二区| 香蕉久久夜色精品| 国产精品免费看| 麻豆精品一区二区综合av| 国产亚洲欧美激情| 欧美在线一区二区| 久久综合九色综合网站| 极品少妇一区二区三区| 久久久久久婷| 亚洲国产日韩欧美在线99| 亚洲人成网站999久久久综合| 在线一区视频| 亚洲欧美视频在线观看视频| 国产精品久久久久久久午夜片| 中日韩在线视频| 久久激情五月婷婷| 狠狠色噜噜狠狠色综合久| 久久久亚洲成人| 亚洲国产精品女人久久久| 夜夜精品视频| 国产欧美一区二区精品秋霞影院 | 亚洲精品中文字幕在线观看| 一本久久综合| 国产精品一区免费在线观看| 久久超碰97人人做人人爱| 欧美成人免费网| 这里只有精品在线播放| 国产噜噜噜噜噜久久久久久久久| 欧美一区二区三区久久精品茉莉花 | 另类酷文…触手系列精品集v1小说| 久久精品女人天堂| 亚洲精品国产精品乱码不99按摩| 欧美日韩激情网| 欧美一区二区视频免费观看| 欧美激情一区二区三区蜜桃视频| 亚洲一区二区伦理| 影音先锋一区| 国产精品久久久久99| 久久免费国产| 亚洲午夜一二三区视频| 欧美国产日本在线| 午夜精品久久久久久久久久久久 | 99re视频这里只有精品| 国产精品一区在线观看| 欧美jizz19性欧美| 香蕉成人伊视频在线观看| 亚洲欧洲精品一区| 久久久久久久波多野高潮日日| 99热在线精品观看| 曰本成人黄色| 国产欧美一区二区色老头| 欧美成人在线免费视频| 欧美在线视频一区| 一区二区三区成人| 亚洲欧洲精品一区| 欧美成人嫩草网站| 久久精品色图| 亚洲欧美自拍偷拍| 这里只有精品丝袜| 亚洲美女av在线播放| 在线欧美视频| 激情国产一区| 国产视频久久久久| 国产精品视频yy9299一区| 欧美日本在线观看| 欧美黄色免费网站| 美女999久久久精品视频| 久久久久成人精品| 性色av香蕉一区二区| 亚洲一区二区高清| 一区二区三区高清| 一本一本久久a久久精品综合麻豆| 亚洲韩国一区二区三区| 免费欧美网站| 亚洲第一福利视频| 欧美黄污视频| 亚洲国产另类 国产精品国产免费| 蜜桃精品一区二区三区| 久久综合999| 免费成人av资源网| 免费在线成人av| 欧美激情一区二区三区全黄| 欧美成人一区二区三区| 欧美激情一区在线| 亚洲国产精品一区在线观看不卡| 亚洲国产成人久久综合| 91久久久久久久久久久久久| 亚洲剧情一区二区| 亚洲精品日韩在线| 在线视频免费在线观看一区二区| 在线一区二区日韩| 亚洲女女做受ⅹxx高潮| 欧美在线看片| 男人天堂欧美日韩| 欧美日韩国产精品一区二区亚洲| 欧美三级电影精品| 国产精品综合久久久| 黄色av一区| 日韩亚洲欧美在线观看| 亚洲性夜色噜噜噜7777| 久久激情一区| 欧美激情视频一区二区三区在线播放 | 欧美午夜激情在线| 国产精品亚洲综合| 在线精品国产欧美| 91久久黄色| 亚洲已满18点击进入久久| 久久久精品网| 亚洲精品国产精品国自产在线| 亚洲一区尤物| 看欧美日韩国产| 国产精品国产福利国产秒拍| 国产一区二区三区免费在线观看 | 国产精品福利片| 精品成人一区二区三区| 日韩亚洲国产精品| 久久精品男女| 日韩视频免费观看高清在线视频| 性感少妇一区| 欧美三级电影精品| 在线观看日韩av电影| 亚洲欧美国产精品专区久久| 免费看的黄色欧美网站| 一区二区三区.www| 噜噜噜躁狠狠躁狠狠精品视频| 欧美午夜精品久久久| 亚洲国产日韩欧美综合久久| 亚洲欧美日韩精品| 亚洲三级免费观看| 美女视频网站黄色亚洲| 国产日韩高清一区二区三区在线| 日韩视频在线观看一区二区| 久久人人爽人人爽|