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

liyuxia713

蹣跚前行者

常用鏈接

統(tǒng)計

Algorithms

C++

最新評論

深入理解strcpy,strncpy

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

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

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

評論

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

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美国产精品日韩| 久久国产88| 亚洲国内精品| 欧美成人精品1314www| 亚洲激情专区| 日韩视频精品在线观看| 欧美日韩精品系列| 欧美一区二视频| 久久精品视频va| 99re国产精品| 亚洲欧美国产精品桃花| 激情综合自拍| 最新国产乱人伦偷精品免费网站| 欧美三级中文字幕在线观看| 欧美一区二区日韩| 久久男人av资源网站| 日韩一级黄色大片| 午夜久久一区| 亚洲精品欧美在线| 午夜精品成人在线视频| 亚洲国产精品久久久久| 亚洲一二三区在线| 亚洲国产老妈| 午夜亚洲福利在线老司机| 最新国产成人在线观看| 亚洲一级片在线观看| 亚洲国产精品123| 亚洲嫩草精品久久| 亚洲精品亚洲人成人网| 欧美亚洲日本网站| 一区二区激情视频| 久久久久久成人| 亚洲综合色噜噜狠狠| 欧美mv日韩mv国产网站app| 欧美一区二区高清在线观看| 欧美第十八页| 欧美www视频| 国产综合视频| 亚洲一区二区三区三| 日韩亚洲在线观看| 卡一卡二国产精品| 久久久青草青青国产亚洲免观| 欧美日韩另类视频| 91久久国产精品91久久性色| 在线成人激情黄色| 午夜一级久久| 欧美影院午夜播放| 国产精品美女www爽爽爽| 亚洲第一区在线观看| 亚洲第一在线综合网站| 久久成人久久爱| 欧美在线免费视屏| 国产精品一区视频网站| 亚洲一区二区精品视频| 亚洲图中文字幕| 欧美日韩国产不卡| 亚洲精品日韩综合观看成人91| 亚洲激情综合| 欧美1区视频| 久久久久高清| 久久影视精品| 欧美美女日韩| 欧美电影免费观看网站| 精品福利av| 久久久久国产精品www| 久久久一区二区| 韩国av一区二区三区在线观看| 欧美一区二区观看视频| 久久国产欧美精品| 好吊色欧美一区二区三区四区 | 亚洲少妇在线| 欧美日韩精品三区| 在线一区亚洲| 欧美有码在线观看视频| 国产一区二区三区直播精品电影 | 一区二区毛片| 性欧美video另类hd性玩具| 国产欧美一区二区白浆黑人| 午夜视频一区在线观看| 免费成人性网站| 亚洲免费不卡| 国产精品视频精品视频| 久久国产婷婷国产香蕉| 欧美a级大片| 久久国产加勒比精品无码| 欧美激情国产精品| 在线视频欧美一区| 国产人成精品一区二区三| 久久婷婷国产综合国色天香| 亚洲激情视频在线| 亚洲综合二区| 玉米视频成人免费看| 欧美精品日韩三级| 亚洲午夜精品在线| 美日韩在线观看| 亚洲一区二区在线免费观看| 国模叶桐国产精品一区| 欧美精品日韩综合在线| 欧美影院午夜播放| 日韩视频一区二区三区在线播放免费观看| 亚洲综合日韩中文字幕v在线| 在线成人免费观看| 国产精品ⅴa在线观看h| 久久野战av| 亚洲欧美国产视频| 亚洲激情欧美激情| 久久人人精品| 亚洲在线免费| 91久久黄色| 黑人操亚洲美女惩罚| 欧美视频免费| 欧美精品在线网站| 久久九九热re6这里有精品| 中文无字幕一区二区三区| 欧美激情小视频| 久久久久久色| 欧美影院成年免费版| 一区二区av| 亚洲国产美女| 尤物精品在线| 国内欧美视频一区二区| 国产精品男gay被猛男狂揉视频| 欧美国产精品中文字幕| 久久综合久久久| 久久精品论坛| 欧美专区在线观看| 亚洲欧美视频一区| 亚洲视频电影图片偷拍一区| 亚洲精品一级| 亚洲老司机av| 亚洲精品极品| 亚洲激情在线观看视频免费| 欧美高清日韩| 亚洲国产美国国产综合一区二区| 欧美成人有码| 欧美激情一区二区三区全黄| 蜜桃久久精品乱码一区二区| 久久手机精品视频| 久久五月婷婷丁香社区| 久久视频精品在线| 老司机成人在线视频| 久久亚洲春色中文字幕久久久| 久久久久久一区二区三区| 欧美一区二区视频网站| 欧美中文在线免费| 久久久亚洲国产天美传媒修理工| 久久久久免费| 老色批av在线精品| 欧美成人精品h版在线观看| 欧美成人免费播放| 亚洲国产成人精品久久| 91久久亚洲| 一区二区三区久久网| 亚洲午夜久久久久久尤物| 亚洲欧美日韩电影| 久久精品天堂| 欧美国产日韩免费| 国产精品家庭影院| 国产一区二区三区的电影| 亚洲视频每日更新| 欧美一区二区在线免费播放| 久久婷婷人人澡人人喊人人爽| 猫咪成人在线观看| 欧美日韩亚洲一区二区| 国产欧美日韩精品专区| …久久精品99久久香蕉国产| av成人老司机| 久久精品一区二区| 欧美激情 亚洲a∨综合| 一区二区高清视频在线观看| 久久国产免费| 欧美全黄视频| 国模一区二区三区| 夜夜精品视频| 久久久久免费| 亚洲伦理在线观看| 久久黄色小说| 欧美视频中文字幕在线| 伊人久久男人天堂| 亚洲一区免费看| 免费视频久久| 亚洲一区在线观看视频| 免费欧美视频| 国产日韩欧美日韩大片| 夜夜嗨av一区二区三区四区| 久久福利精品| 99一区二区| 蜜臀av国产精品久久久久| 国产欧美日韩视频一区二区| 亚洲精品裸体| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品99久久久久久宅男| 麻豆精品91| 黑人一区二区三区四区五区| 亚洲综合国产激情另类一区| 亚洲国产高清一区二区三区| 久久精品国产精品亚洲综合| 国产精品a久久久久| 99精品国产热久久91蜜凸| 免费观看一区|