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

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 幸運草 閱讀(3372) 評論(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>
            美女网站久久| 国外成人在线| 亚洲免费在线视频| 一区二区三区黄色| 亚洲人成在线观看网站高清| 免费久久99精品国产| 久久久无码精品亚洲日韩按摩| 香蕉久久精品日日躁夜夜躁| 欧美一区二区三区啪啪| 欧美中文字幕在线播放| 另类酷文…触手系列精品集v1小说| 久久精品一区二区国产| 久久视频精品在线| 欧美激情一区二区在线 | 9国产精品视频| 一区二区三区不卡视频在线观看 | 日韩午夜在线| 久久精品国产亚洲一区二区| 久久国产欧美| 久久综合久久久久88| 午夜精品福利一区二区蜜股av| 午夜精品一区二区三区在线播放 | 男人天堂欧美日韩| 亚洲精品影视在线观看| 欧美激情在线有限公司| 久久综合五月| 嫩草成人www欧美| 蜜臀av一级做a爰片久久| 久久久久久久精| 欧美激情影音先锋| 亚洲男人的天堂在线观看| 亚洲一区二区三区四区五区午夜 | 亚洲一区bb| 99国产一区| 亚洲一区二区三区国产| 久久久久久亚洲精品杨幂换脸| 久久综合九色| 久久精品成人| 亚洲一区尤物| 欧美.www| 亚洲免费视频成人| 免费成人小视频| 国产精品久久久久久久午夜| 国语自产在线不卡| 亚洲一二三级电影| 欧美~级网站不卡| 亚洲欧美日韩中文视频| 欧美连裤袜在线视频| 黄色亚洲免费| 午夜精品一区二区三区四区| 亚洲日本va午夜在线电影| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲欧美另类国产| 亚洲国产乱码最新视频| 久久精品国产久精国产思思| 国产精品乱码人人做人人爱| 亚洲精品日韩激情在线电影| 久久一区二区三区国产精品| 中文精品一区二区三区| 欧美日韩国产欧| 亚洲日韩视频| 欧美韩日精品| 麻豆精品国产91久久久久久| 国模精品一区二区三区色天香| 亚洲欧美日韩久久精品| 中文欧美日韩| 国产精品一页| 久久成人精品| 欧美伊人久久久久久久久影院| 国产精品一页| 久久色在线播放| 久久国产乱子精品免费女 | 欧美成人免费视频| 亚洲黄色尤物视频| 亚洲黄一区二区三区| 欧美aaaaaaaa牛牛影院| 在线看国产一区| 欧美大秀在线观看| 欧美日韩国产影院| 亚洲欧美综合一区| 欧美一区二区三区久久精品| 国产亚洲精品资源在线26u| 久久网站免费| 欧美mv日韩mv国产网站app| 99在线热播精品免费| 99re6热只有精品免费观看| 国产精品美女久久久久久免费| 欧美在线一二三| 久久综合中文色婷婷| 免费不卡在线观看| 一区二区欧美日韩视频| 久久精品系列| 日韩午夜在线电影| 久久久九九九九| 日韩一级不卡| 亚洲一区在线看| 亚洲电影网站| 一区二区三区四区五区精品| 国产精品美女久久| 欧美国产国产综合| 国产精品视频精品| 欧美激情综合| 国产日韩欧美视频| 亚洲国产精品尤物yw在线观看| 国产精品久久久久一区二区三区| 久久久www| 欧美成人影音| 久久久91精品国产一区二区三区 | 久久九九久精品国产免费直播 | 欧美在线网址| 日韩西西人体444www| 亚洲综合二区| 亚洲剧情一区二区| 欧美中文字幕在线| 一区二区三区四区蜜桃| 久久精品欧美日韩| 午夜日韩福利| 欧美日韩国产欧美日美国产精品| 久久久久久**毛片大全| 欧美区在线播放| 免费高清在线视频一区·| 老牛影视一区二区三区| 国产视频一区二区三区在线观看| 亚洲自拍偷拍福利| 黄色综合网站| 欧美一级视频免费在线观看| 亚洲欧美伊人| 国产欧美视频一区二区| 久久se精品一区精品二区| 欧美国产免费| 久久蜜桃av一区精品变态类天堂| 国产精品乱码一区二区三区| 老司机午夜免费精品视频 | 久久亚裔精品欧美| 亚洲激情在线观看视频免费| 欧美日韩亚洲网| 午夜精品免费在线| 久久影院午夜论| 亚洲一区二区免费看| 欧美精品免费在线观看| 欧美一区二区成人6969| 国产喷白浆一区二区三区| 欧美人妖在线观看| 欧美日韩不卡在线| 国产精品激情av在线播放| 欧美另类极品videosbest最新版本 | 亚洲欧美日韩一区在线观看| 久久av资源网| 一区二区欧美精品| 亚洲性xxxx| 国产精品国产三级国产专区53| 亚洲国产婷婷香蕉久久久久久| 在线成人小视频| 久久久久久网址| 久久久噜噜噜| 亚洲人成亚洲人成在线观看| 久久久精品tv| 亚洲区欧美区| 国产精品99久久99久久久二8 | 久久久久网址| 国产日韩亚洲欧美综合| 亚洲主播在线播放| 美女图片一区二区| 亚洲高清色综合| 久久婷婷蜜乳一本欲蜜臀| 亚洲国产欧美一区二区三区同亚洲 | 亚洲一区二区三区午夜| 欧美午夜激情小视频| 欧美在线播放| 美女视频黄免费的久久| 18成人免费观看视频| 欧美日韩久久| 亚洲午夜久久久久久久久电影网| 亚洲欧美视频在线观看视频| 国内精品久久久| 免费观看成人| 亚洲精品乱码久久久久久黑人| 国产一区二区三区无遮挡| 久久精品夜色噜噜亚洲aⅴ| 免费观看成人网| 国产精品久久久久久模特 | 亚洲精品一区二区三区婷婷月| 欧美v日韩v国产v| 亚洲国产精品第一区二区| 亚洲专区国产精品| 韩国一区电影| 欧美 日韩 国产精品免费观看| 亚洲午夜影视影院在线观看| 久久午夜av| 日韩小视频在线观看专区| 国产偷国产偷精品高清尤物| 久久婷婷丁香| 99视频精品全部免费在线| 欧美v日韩v国产v| 亚洲一区二区三区高清| 狠狠色丁香婷婷综合| 国产九色精品成人porny| 亚洲精品免费在线| 一区二区三区在线视频免费观看| 久久亚洲综合色|