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

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>
            一区二区三区成人精品| 欧美一区二区黄色| 国产精品久久777777毛茸茸| 亚洲少妇在线| 久久成人综合视频| 亚洲国产视频直播| 国产精品成人国产乱一区| 欧美极品在线观看| 亚洲国产日韩综合一区| 国产日韩成人精品| 欧美日韩国产精品一卡| 欧美专区日韩专区| 国产精品99久久久久久白浆小说| 欧美日韩精品是欧美日韩精品| 免费不卡在线观看| 最新高清无码专区| 一区二区三区在线视频播放| 欧美理论在线| 女仆av观看一区| 午夜久久久久久久久久一区二区| 在线亚洲一区二区| 在线欧美日韩国产| 国内精品免费午夜毛片| 国产精品国产| 国产一区白浆| 国产一区二区精品丝袜| 1769国产精品| 亚洲尤物视频在线| 亚洲午夜激情| 在线亚洲欧美| 麻豆精品精华液| 免费av成人在线| 一本大道久久精品懂色aⅴ| 亚洲激情女人| 国产日韩一区二区三区在线播放| 亚洲欧美激情视频| 一本色道久久综合狠狠躁篇怎么玩| 久久精品国产v日韩v亚洲| 亚洲在线中文字幕| 久久九九精品99国产精品| 久久在线视频在线| 久久精品卡一| 日韩视频一区二区三区| 免费中文字幕日韩欧美| 久久久视频精品| 麻豆精品精华液| 亚洲网站在线| 性欧美xxxx大乳国产app| 欧美精品一区二区三| 亚洲电影免费在线| 久久久国产一区二区| 亚洲一区二区三区在线播放| 欧美怡红院视频一区二区三区| 一本大道久久精品懂色aⅴ| 欧美一区二区三区视频在线观看| 欧美一区二区日韩一区二区| 欧美日韩免费在线视频| 国产精品一级| 亚洲国产精品激情在线观看| 亚洲激情在线| 免费成人美女女| 另类天堂视频在线观看| 一区二区三区四区精品| 最新中文字幕亚洲| 欧美暴力喷水在线| 欧美午夜精品久久久久久孕妇 | 亚洲毛片av在线| 亚洲欧洲日本国产| 久久久久综合网| 欧美在线一二三四区| 国产美女诱惑一区二区| 亚洲欧美韩国| 亚洲第一页在线| 一区二区三区日韩欧美精品| 欧美激情日韩| 亚洲一区精品视频| 亚洲午夜精品久久久久久app| 中国日韩欧美久久久久久久久| 亚洲欧洲精品成人久久奇米网| 亚洲精品国产精品乱码不99按摩 | 一区二区三区在线观看国产| 午夜宅男欧美| 欧美电影免费网站| 亚洲午夜一级| 国产农村妇女精品一二区| 久久久久久九九九九| 免费久久99精品国产自| 在线视频一区二区| 亚洲免费视频中文字幕| 黄色成人片子| 中文av一区二区| 免费亚洲电影在线| 欧美福利网址| 亚洲人体1000| 亚洲精选成人| 欧美精品福利在线| 先锋a资源在线看亚洲| 久久精品国产亚洲一区二区| 国产精品区一区二区三| 亚洲精品欧美激情| 久久久综合精品| 欧美激情一区二区久久久| 亚洲一区图片| 久久人体大胆视频| 激情小说亚洲一区| 亚洲靠逼com| 影音先锋中文字幕一区| 久久久人成影片一区二区三区| 亚洲美女少妇无套啪啪呻吟| 国产精品爱啪在线线免费观看| 亚洲高清二区| 在线一区欧美| 亚洲国产精品女人久久久| 亚洲影视综合| 在线综合亚洲欧美在线视频| 国产偷久久久精品专区| 欧美成人免费播放| 国产精品一二| 日韩一级网站| 亚洲狼人综合| 玖玖综合伊人| 亚洲国产va精品久久久不卡综合| 亚洲一区免费| 欧美福利一区二区三区| 久久久久在线| 国产精品亚洲综合色区韩国| 亚洲人www| 亚洲黄网站在线观看| 亚洲一区免费看| 亚洲一区二区在线| 欧美区在线观看| 日韩亚洲欧美一区二区三区| 亚洲国产日韩在线一区模特| 久久亚洲免费| 免费久久99精品国产自| 国产一区二区高清| 欧美一区三区三区高中清蜜桃| 在线播放豆国产99亚洲| 亚洲欧美一区二区三区在线| 国产欧美一区二区精品性| 91久久综合| 99精品欧美一区二区三区 | 精久久久久久久久久久| 亚洲曰本av电影| 性亚洲最疯狂xxxx高清| 欧美新色视频| 午夜精品久久久久久久99黑人| 国内成人精品视频| 欧美有码在线视频| 欧美aa国产视频| 亚洲日本成人女熟在线观看| 欧美理论电影在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品久久午夜| 免费成人高清视频| 亚洲欧洲一区二区三区| 欧美激情一区二区三区全黄 | 久久深夜福利免费观看| 国产精品免费aⅴ片在线观看| 蜜桃精品一区二区三区| 极品尤物av久久免费看| 另类成人小视频在线| 亚洲日本在线视频观看| 亚洲综合视频在线| 国产精品日韩在线观看| 欧美在线影院在线视频| 亚洲第一免费播放区| 99精品国产热久久91蜜凸| 国产精品一区免费观看| 欧美影院午夜播放| 亚洲精品免费一区二区三区| 性伦欧美刺激片在线观看| 精品不卡在线| 欧美日韩国产片| 久久黄色小说| 亚洲一区日韩在线| 国产视频亚洲| 国产精品久在线观看| 久久伊人亚洲| 亚洲视频专区在线| 黄色成人在线免费| 欧美日韩一区二区三| 久久高清福利视频| 亚洲最新在线| 欧美国产先锋| 在线日韩一区二区| 国产精品二区在线| 久久精品日产第一区二区| 亚洲精品视频在线观看免费| 久久久久久久综合色一本| 9久草视频在线视频精品| 欧美激情亚洲精品| 久久精品一二三| 亚洲欧美国产精品桃花| 亚洲激情婷婷| 免费精品99久久国产综合精品| 国产伊人精品| 国产精品白丝av嫩草影院| 欧美18av| 欧美jizz19hd性欧美|