C strcpy和strcat
strcpy的所謂正確寫(xiě)法:
char *strcpy(char *strDestination, const char *strSource){assert(strDestination!=NULL && strSource!=NULL);char *strD=strDestination;while ((*strDestination++=*strSource++)!='\0')return strD;} char *strcat(char *strDest, const char *strSrc) {char *address = strDest;assert((strDest != NULL) && (strSrc != NULL));while(*strDest){strDest++; }while(*strDest++ = *strSrc++){}return address; }?
這就是所謂的面試筆試最常見(jiàn)最常見(jiàn)的,而且經(jīng)常被鄙視的strcpy
頭文件:string.h
功能:把從src地址開(kāi)始且含有NULL結(jié)束符的字符串賦值到以dest開(kāi)始的地址空間
說(shuō)明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來(lái)容納src的字符串。
返回指向dest的指針。
好了,不說(shuō)這四行代碼到底為什么這么寫(xiě),內(nèi)事不決問(wèn)百度去。
單說(shuō)函數(shù)本身,傳入的是兩個(gè)指針,第二個(gè)是常指針,但是一個(gè)必須滿足的條件是第一個(gè)參數(shù)必須傳入一個(gè)char[]數(shù)組,而不可能是一個(gè)
這樣的一個(gè)指針,或者更sb的是一個(gè)空指針
char *a;字符數(shù)組初始化的時(shí)候要分配長(zhǎng)度,不分配會(huì)默認(rèn),C#還是可以再次分配,不說(shuō)這個(gè),我的意思是說(shuō),我既然要拷貝一個(gè)字符串,那我怎么知道字符串多長(zhǎng)!10w,百千,還是更多,那這個(gè)方法是不是在某些場(chǎng)合不適應(yīng),還有strcat,同樣的問(wèn)題,參數(shù)必須是一個(gè)足夠大已經(jīng)分配過(guò)內(nèi)存的指針,如果沒(méi)有分配足夠內(nèi)存,會(huì)出錯(cuò)。
蕩漾了,寫(xiě)一個(gè)strcat(僅個(gè)人意見(jiàn))
?
轉(zhuǎn)載于:https://www.cnblogs.com/fish124423/archive/2012/07/31/2616920.html
總結(jié)
以上是生活随笔為你收集整理的C strcpy和strcat的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用OGR创建dxf格式矢量数据
- 下一篇: Jquery获取ckEditor的内容