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

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>
            国产一区二区视频在线观看| 亚洲精品乱码久久久久久蜜桃91| 欧美日韩亚洲国产精品| 亚洲自拍电影| 亚洲免费观看高清完整版在线观看熊| 亚洲黄页视频免费观看| 欧美成人免费视频| 亚洲欧洲久久| 亚洲网站在线看| 亚洲男人第一网站| 亚洲欧美视频在线观看| 在线亚洲美日韩| 久久午夜电影网| 欧美成人a∨高清免费观看| 亚洲线精品一区二区三区八戒| 黄色精品一区| 国产麻豆精品视频| 国产日韩欧美一二三区| 国产精品成人一区二区三区夜夜夜| 麻豆精品在线播放| 欧美日韩亚洲一区二区三区在线观看 | 亚洲激情欧美| 欧美激情视频一区二区三区不卡| 国产欧美一区二区精品性| 欧美视频二区36p| 狠狠色综合网| 尤物精品国产第一福利三区 | 久久久xxx| 玖玖综合伊人| 亚洲一区二区视频在线观看| 中国日韩欧美久久久久久久久| 久久中文久久字幕| 在线视频精品一区| 欧美影院成人| 欧美视频在线不卡| 欧美色道久久88综合亚洲精品| 国产精品高清免费在线观看| 国产欧美日韩在线| 亚洲精品国产精品国自产在线| 亚洲调教视频在线观看| 免费久久99精品国产| 亚洲精品一区二区网址 | 一本色道久久99精品综合| 久久综合网络一区二区| 亚洲国产精品一区二区三区 | 久久国产精彩视频| 欧美日韩福利视频| 亚洲人成网站999久久久综合| 亚洲影院免费| 欧美激情一区在线| 欧美淫片网站| 激情成人av| 亚洲欧美清纯在线制服| 亚洲免费综合| 亚洲性色视频| 欧美日韩大陆在线| 亚洲午夜精品久久| 欧美粗暴jizz性欧美20| 亚洲大胆女人| 免费一级欧美片在线播放| 国产噜噜噜噜噜久久久久久久久| 亚洲视频在线观看视频| 亚洲第一狼人社区| 久久久精品999| 狠狠噜噜久久| 久久av一区| 久久aⅴ乱码一区二区三区| 国产精品户外野外| 在线视频你懂得一区| 99这里只有精品| 欧美成在线观看| 在线一区二区三区四区五区| 欧美激情精品| 亚洲一二三区在线| 日韩视频国产视频| 亚洲伦理在线免费看| 麻豆精品传媒视频| 99在线精品免费视频九九视| 欧美成人中文字幕| 亚洲一区在线观看视频| 国产综合久久久久影院| 欧美中文在线免费| 久久久精品国产免大香伊| 激情久久中文字幕| 最新日韩av| 欧美日韩在线综合| 亚洲一区二区三区成人在线视频精品 | 欧美成人午夜77777| 中日韩美女免费视频网址在线观看| 欧美成人免费观看| 欧美在线观看天堂一区二区三区| 亚洲国产成人精品女人久久久| 蜜桃伊人久久| 欧美香蕉大胸在线视频观看| 午夜精彩国产免费不卡不顿大片| 亚洲在线一区| 亚洲欧洲一区二区在线播放| 亚洲丰满在线| 国产美女精品视频免费观看| 欧美中文在线观看国产| 香蕉成人久久| 亚洲私拍自拍| 欧美综合第一页| 亚洲一区二区精品在线| 欧美在线|欧美| 亚洲第一级黄色片| 亚洲欧美视频| 亚洲日本一区二区| 欧美在线播放一区二区| 亚洲国产婷婷香蕉久久久久久| 久久综合免费视频影院| 国产精品久久久久久亚洲调教| 久久精品国产亚洲一区二区三区| 欧美精品1区2区3区| 欧美在线free| 欧美成人日本| 久久精品国内一区二区三区| 嫩草成人www欧美| 久久躁日日躁aaaaxxxx| 欧美日韩视频免费播放| 亚洲福利精品| 国产欧美日韩精品一区| 久久久久久久久久久一区| 国产精品久久久久久一区二区三区| 久久久久久亚洲精品杨幂换脸 | 亚洲人成在线观看网站高清| 激情一区二区三区| 99re这里只有精品6| 夜夜精品视频一区二区| 久久久久综合一区二区三区| 日韩视频免费观看高清在线视频 | 亚洲精品免费一区二区三区| 亚洲欧美日韩一区二区在线 | 欧美成人午夜影院| 亚洲黄色成人| 韩国精品久久久999| 欧美不卡在线| 99国产麻豆精品| 麻豆久久婷婷| 亚洲欧洲日产国产网站| 久久gogo国模裸体人体| 亚洲国产精品一区在线观看不卡 | 久久视频国产精品免费视频在线| 久久精品人人做人人综合| 蜜臀久久久99精品久久久久久| 亚洲激情网站免费观看| 欧美日韩免费观看一区| 久久天天躁狠狠躁夜夜av| 亚洲欧洲精品一区二区| 久久一区二区三区四区| 亚洲精品免费网站| 国产精品视频99| 欧美日韩一区二区视频在线| 欧美在线免费看| 亚洲一区二区三区精品在线观看| 美女国产一区| 亚洲黄色av| 红桃视频一区| 国产精品99一区| 欧美人体xx| 久久久久久久久久久久久女国产乱 | 亚洲国产精品一区二区www| 蜜臀av性久久久久蜜臀aⅴ| 久久成人精品无人区| 日韩亚洲欧美一区| 亚洲九九九在线观看| 久久女同互慰一区二区三区| 激情六月婷婷综合| 国产综合久久久久久鬼色| 欧美日韩一区二区三区视频 | 在线观看日韩国产| 国产精品家教| 欧美国产在线电影| 欧美激情一区二区| 久久久久青草大香线综合精品| 欧美永久精品| 亚洲在线观看免费| 亚洲直播在线一区| 一本不卡影院| 亚洲人成人77777线观看| 亚洲激情亚洲| 欧美福利专区| 亚洲激情图片小说视频| 欧美韩日亚洲| 暖暖成人免费视频| 欧美黄色免费网站| 欧美黄色精品| 99精品欧美一区二区蜜桃免费| 欧美激情亚洲另类| 亚洲精品免费在线播放| 亚洲高清视频一区| 亚洲人成亚洲人成在线观看图片| 亚洲欧美国产精品桃花| 亚洲欧美一区二区激情| aa国产精品| 性欧美大战久久久久久久免费观看| 一区二区三区免费在线观看| 狼狼综合久久久久综合网| 亚洲国产成人精品久久久国产成人一区 | 亚洲视频中文|