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

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>
            久久久久久有精品国产| 亚洲经典一区| 国产精品最新自拍| 欧美大片专区| 伊人精品视频| 国产日本欧洲亚洲| 欧美1区免费| 可以免费看不卡的av网站| 狠狠色丁香婷婷综合影院| 久久精品视频在线免费观看| 午夜精品久久| 欧美成年人视频网站| 欧美成人精品在线播放| 一区二区三区www| 久久精品在线观看| 亚洲特黄一级片| 欧美顶级大胆免费视频| 欧美一级大片在线观看| 欧美国产成人在线| 久久久久久久久伊人| 国产精品白丝av嫩草影院| 麻豆久久婷婷| 经典三级久久| 欧美一区二区黄| 欧美一区二区三区在线看| 欧美另类综合| 亚洲国产一区视频| 亚洲电影观看| 老司机免费视频一区二区三区| 亚欧美中日韩视频| 国产精品99一区| 亚洲综合视频网| 午夜精品久久久久久| 黄色影院成人| 夜夜嗨av一区二区三区| 国产精品久久久久久久久久妞妞| 欧美激情视频在线播放 | 欧美日韩在线综合| 性欧美超级视频| 一道本一区二区| 国产精品99久久久久久久vr| 久久午夜国产精品| 久久在线免费观看| 亚洲国产欧美不卡在线观看| 亚洲精品午夜| 老司机成人网| 亚洲无线视频| 欧美黑人在线观看| 一区二区三区精品久久久| 国产三级精品在线不卡| 欧美一级大片在线观看| 亚洲精品久久嫩草网站秘色| 亚洲一区美女视频在线观看免费| 国产欧美在线视频| 欧美视频中文在线看| 久久资源在线| 久久本道综合色狠狠五月| 99国产精品久久久久久久成人热| 欧美xxxx在线观看| 久久久www成人免费无遮挡大片| 一二三四社区欧美黄| 亚洲国产激情| 在线日韩中文字幕| 亚洲国产精品ⅴa在线观看| 国产精品日韩欧美一区二区三区 | 欧美激情无毛| 亚洲美女网站| 一区二区三区产品免费精品久久75| 国产精品欧美激情| 亚洲欧美日韩另类| 亚洲一级黄色| 欧美成人一二三| 欧美在线电影| 在线亚洲观看| 亚洲国产女人aaa毛片在线| 国产精品亚洲片夜色在线| 欧美 亚欧 日韩视频在线| 亚洲午夜在线观看| 99re66热这里只有精品4| 美女视频黄a大片欧美| 香蕉久久精品日日躁夜夜躁| 99在线精品视频| 在线不卡视频| 狠狠色2019综合网| 国产精品高精视频免费| 欧美国产三区| 欧美成人国产va精品日本一级| 久久超碰97中文字幕| 亚洲欧美日韩精品久久亚洲区 | 亚洲综合国产精品| 一本色道久久综合亚洲精品不| 欧美aa在线视频| 久久久最新网址| 久久精品国产清自在天天线| 亚洲欧美在线免费观看| 亚洲综合电影| 亚洲综合好骚| 午夜免费电影一区在线观看| 亚洲一区二区三区色| 亚洲午夜一区二区三区| 日韩一级精品视频在线观看| 亚洲精品久久久久久下一站| 在线欧美小视频| 亚洲激情国产| 亚洲人成7777| 日韩午夜一区| 在线亚洲一区| 亚洲欧美日韩一区在线| 亚洲欧美日韩综合一区| 久久精品国产一区二区三区免费看| 亚洲欧美成aⅴ人在线观看| 亚洲欧美成人一区二区在线电影| 亚洲一区视频| 欧美一区二区高清在线观看| 欧美一区三区二区在线观看| 久久久久久有精品国产| 久久久久久久激情视频| 欧美高清一区| 99精品免费视频| 亚洲男同1069视频| 久久精品主播| 免费看精品久久片| 欧美婷婷久久| 国产一区二区三区精品欧美日韩一区二区三区| 国产情人综合久久777777| 在线成人激情视频| 999在线观看精品免费不卡网站| 在线视频中文亚洲| 久久精品官网| 欧美国产日韩一二三区| 99在线|亚洲一区二区| 欧美一区二区三区免费在线看| 久久一二三国产| 国产精品成人va在线观看| 国产午夜精品麻豆| 91久久中文字幕| 亚洲欧美精品中文字幕在线| 久久亚洲精品视频| 亚洲美女91| 久久精品视频在线免费观看| 欧美日韩国产成人在线免费 | 99精品视频免费观看视频| 欧美一区二粉嫩精品国产一线天| 免费国产自线拍一欧美视频| 一区二区成人精品| 久久噜噜噜精品国产亚洲综合| 欧美日韩国产首页在线观看| 国产午夜精品全部视频播放| 亚洲精品日韩激情在线电影| 久久岛国电影| 日韩一级在线| 久久躁日日躁aaaaxxxx| 国产精品视频999| 亚洲精品一区中文| 久久九九精品| 中日韩视频在线观看| 欧美va亚洲va香蕉在线| 国产亚洲免费的视频看| 亚洲视频图片小说| 亚洲丶国产丶欧美一区二区三区 | 亚洲黄色在线观看| 久久精品国产亚洲一区二区| 日韩一二在线观看| 欧美v国产在线一区二区三区| 国产欧美日韩麻豆91| 正在播放欧美一区| 亚洲国产精品久久久久秋霞影院 | 国产精品国产三级国产普通话三级 | 欧美午夜电影一区| 亚洲精品视频一区二区三区| 久久久水蜜桃| 午夜久久久久久久久久一区二区| 欧美日韩在线精品| 亚洲精品一区久久久久久| 欧美国产免费| 久久综合久久综合久久| 黄色成人av网| 美女诱惑黄网站一区| 欧美在线精品免播放器视频| 国产视频一区在线| 久久国产精品亚洲77777| 亚洲欧美激情一区| 国产精品视频一区二区高潮| 亚洲欧美日韩视频二区| 一本色道久久综合| 国产精品成人在线观看| 亚洲一区二区精品| 亚洲天堂视频在线观看| 国产精品日本欧美一区二区三区| 亚洲午夜视频在线观看| 亚洲视频1区2区| 国产欧美精品va在线观看| 欧美在线三区| 久久爱www| 1000部精品久久久久久久久| 欧美激情一区二区三区在线| 欧美二区乱c少妇| 亚洲色图综合久久| 亚洲一区二区在线播放| 国产亚洲制服色|