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

liyuxia713

蹣跚前行者

常用鏈接

統(tǒng)計

Algorithms

C++

最新評論

深入理解strcpy,strncpy

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

看到這樣一個改錯題:
char p[5]; 
char* s="12345"
strcpy(p,s);
   cout << p << endl;
錯誤之處是很顯然的,作為字符串字面值的"12345"會在結(jié)尾處自動加上空字符null,從而長度是6,上面的strcpy是會越界的,從而是個越界錯誤。
問題是我以為這樣的程序編譯的時候會出錯呢!但是我在vc上運(yùn)行時是可以輸出正確結(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 的缺點(diǎn)了.
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的原因了吧!),如果實(shí)在要用到上述的代碼上,就在代碼最后加上p[5] = '\0'; 吧!

posted on 2009-04-26 20:59 幸運(yùn)草 閱讀(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>
            蜜桃av一区二区| 韩国福利一区| 一区二区欧美国产| 亚洲国产精品成人综合| 亚洲欧美日韩综合国产aⅴ| 中文精品视频| 中文久久乱码一区二区| 亚洲一区二区视频| 午夜性色一区二区三区免费视频| 午夜国产不卡在线观看视频| 久久九九热免费视频| 老司机精品视频一区二区三区| 免费人成网站在线观看欧美高清| 欧美成人亚洲| 亚洲精品日韩一| 亚洲女性喷水在线观看一区| 久久成人免费日本黄色| 亚洲视频在线免费观看| 欧美一区=区| 久久综合国产精品| 亚洲欧洲日本国产| 亚洲尤物在线视频观看| 久久精品日韩欧美| 欧美—级在线免费片| 国产精品爽黄69| 亚洲国产欧美一区二区三区久久| 一区二区三区成人| 久久精品一本| 亚洲精品乱码久久久久久按摩观| 亚洲一区二区视频| 久久综合久久综合久久| 欧美日韩中文| 亚洲国产美女精品久久久久∴| 一道本一区二区| 鲁大师成人一区二区三区| 亚洲精品久久久久久久久久久久久 | 在线成人www免费观看视频| 亚洲韩国精品一区| 欧美一级久久久久久久大片| 亚洲国产精品一区二区www在线 | 国产主播一区二区三区四区| 亚洲乱亚洲高清| 久久蜜桃资源一区二区老牛| 亚洲欧洲一区二区三区| 久久久久久久久久看片| 国产精品大片| 一区二区三区成人精品| 欧美国产高清| 亚洲精品国产精品国自产在线 | 久久久五月天| 亚洲欧美激情在线视频| 久久精品亚洲乱码伦伦中文 | 亚洲一区免费观看| 久久av红桃一区二区小说| 母乳一区在线观看| 国产在线观看一区| 午夜亚洲激情| 亚洲精品久久久久久久久久久久久| 久久9热精品视频| 国产精品视频免费一区| 亚洲一区二区三| 99精品视频免费| 欧美日韩国产欧美日美国产精品| 亚洲电影自拍| 免费人成精品欧美精品| 久久综合色影院| 亚洲国产精品成人综合| 欧美.com| 欧美韩日一区| 日韩午夜电影| 亚洲精品视频一区| 欧美国产综合视频| 日韩视频第一页| 亚洲欧洲一区二区三区在线观看 | 国产亚洲精品资源在线26u| 亚洲欧美在线高清| 亚洲一区欧美激情| 国产乱人伦精品一区二区 | 99国产精品| 欧美视频一区在线| 亚洲图片欧洲图片日韩av| av成人天堂| 国产女人精品视频| 久久久久欧美精品| 卡一卡二国产精品| 亚洲狼人精品一区二区三区| 99精品欧美一区二区蜜桃免费| 国产精品国产三级国产普通话蜜臀| 欧美激情综合亚洲一二区| 中文久久乱码一区二区| 午夜精品久久久久久久男人的天堂| 国产欧美日韩精品a在线观看| 久久精品一二三| 欧美电影资源| 午夜在线一区| 免费看黄裸体一级大秀欧美| 亚洲美女精品久久| 亚洲永久字幕| 最新日韩在线视频| 亚洲午夜免费福利视频| 黄色av一区| 亚洲美女网站| 狠狠色狠狠色综合| 亚洲国产mv| 亚洲精品视频在线观看免费| 国产欧美精品一区aⅴ影院| 欧美电影在线播放| 国产精品区一区| 亚洲福利视频三区| 国产精品第13页| 免费在线欧美视频| 国产精品美女久久久久久免费| 久久亚洲捆绑美女| 欧美午夜寂寞影院| 欧美黄色影院| 国产日本欧美一区二区三区在线| 亚洲国产精品成人一区二区| 国内成+人亚洲| 99视频有精品| 亚洲片国产一区一级在线观看| 亚洲欧美久久久久一区二区三区| 日韩亚洲精品视频| 久久一区中文字幕| 久久精品观看| 国产精品视区| 亚洲一区二区在线免费观看| 亚洲精品中文在线| 久久综合九色综合欧美狠狠| 久久午夜精品一区二区| 国产精品永久免费| 一区二区三区高清在线| 日韩亚洲在线| 欧美伦理91| 亚洲国产国产亚洲一二三| 一区二区三区在线视频观看| 欧美一二三区在线观看| 亚洲一区在线看| 欧美日韩中文另类| 99精品欧美一区二区三区综合在线 | 99精品欧美一区二区三区| 久久综合网色—综合色88| 久久久久久久久久久久久9999| 国产精品一区二区黑丝| 亚洲综合电影| 久久电影一区| 经典三级久久| 久久天天躁狠狠躁夜夜爽蜜月| 久久深夜福利免费观看| 国内精品久久久久久久影视麻豆| 亚洲一区在线播放| 欧美自拍偷拍午夜视频| 亚洲在线视频| 久久久久国产一区二区| 好吊成人免视频| 久热这里只精品99re8久| 欧美成人中文字幕在线| 亚洲免费高清视频| 欧美午夜电影完整版| 亚洲欧美日韩第一区| 久久久久免费视频| 亚洲欧洲精品一区二区三区| 欧美freesex8一10精品| 在线播放日韩欧美| 欧美高清视频一区| 一区二区高清在线观看| 久久精品视频网| 亚洲国产精品视频| 欧美日本一道本| 亚洲欧美一区二区三区在线| 久久综合电影| 亚洲深夜激情| 韩日精品视频一区| 欧美日韩1区2区3区| 亚洲午夜激情在线| 久久亚裔精品欧美| 亚洲精选成人| 国产啪精品视频| 免费成人美女女| 亚洲视频一二三| 老牛影视一区二区三区| 一本大道久久精品懂色aⅴ| 国产欧美日韩不卡| 欧美**人妖| 亚洲欧美中文在线视频| 亚洲国产91| 久久精品国产亚洲aⅴ| 亚洲精品一区二区三区不| 国产精品vip| 免费在线日韩av| 欧美一区二区三区在线免费观看 | 午夜精品久久久久久久99热浪潮| 欧美www视频| 欧美一区二区三区四区高清| 亚洲激情精品| 国产一区在线免费观看| 欧美日韩一区成人| 裸体歌舞表演一区二区| 午夜视频一区| 亚洲视频免费看| 日韩亚洲欧美一区|