字串函式彙總

2021-09-06 21:50:10 字數 2897 閱讀 4845

為什麼strcpy要有返回值?

返回strdest的原始值使函式能夠支援鏈式表示式,增加了函式的「附加值」。同樣功能的函式,如果能合理地提高的可用性,自然就更加理想。

鏈式表示式的形式如:

int ilength=strlen(strcpy(stra,strb));

又如:char * stra=strcpy(new char[10],strb);

返回strsrc的原始值是錯誤的。其一,源字串肯定是已知的,返回它沒有意義。其二,不能支援形如第二例的表示式。其三,為了保護源字串,形參用const限定strsrc所指的內容,把const char *作為char *返回,型別不符,編譯報錯。

strcpy的原型為extern char* strcpy(char *dest,const char *src);它包含在標頭檔案string.h中,它的返回值指向dest的指標,其功能是把src所指由null結束的字串複製到dest所指的陣列中。值得注意的是,src和dest所指記憶體區域不可以重疊,且dest必須有足夠的空間來容納src的字串,src字串尾的字串結束標誌'\0'也會被複製過去。

char* strcpy(char *strdes, char *strsrc)

字串拷貝函式需要考慮到以下幾點:

原字串與目標字串記憶體重疊

對原字串和目標字串進行null檢查

儲存目標字串strdes基址

賦值過程中遞增以及判空

char* strncpy(char *strdes, char *strsrc, size_t n)

注意:memcpy memmove區別和實現

memcpy與memmove的目的都是將n個位元組的源記憶體位址的內容拷貝到目標記憶體位址中。

但當源記憶體和目標記憶體存在重疊時,memcpy會出現錯誤,而memmove能正確地實施拷貝,但這也增加了一點點開銷。

memmove的處理措施:

(1)當源記憶體的首位址等於目標記憶體的首位址時,不進行任何拷貝

(2)當源記憶體的首位址大於目標記憶體的首位址時,實行正向拷貝

(3)當源記憶體的首位址小於目標記憶體的首位址時,實行反向拷貝

memcpy是c語言中的記憶體複製函式,它的函式原型為void *memcpy(void *dest,const void *src,size_t n).它的目的是將src指向位址為起始位址的連續n個位元組的資料複製到以dest指向位址為起始位址的空間內,函式返回指向dest的指標。需要注意的是,src和dest所指記憶體區域不能重疊,同時,與strcpy相比,memcpy遇到'\0'不結束,而是一定要複製完n個位元組。而且如果目標陣列dest本身已有資料,執行memcpy()之後,將覆蓋原有資料(最多覆蓋n)。如果要追加資料,則每次執行memcpy後,要將目標陣列位址增加到要追加資料的位址。

memmove()函式用來做記憶體複製,可以拿他來複製任何資料型別的物件,可以指定複製的資料長度。

void *memmove(void *dest,void *src,size_t count)

else

4 實現字串轉換為整型(atoi)

注意:a 空格 b 正負號 c 是否為數字 d 是否會溢位

int atoi(string

str)

else

if(str[i]=='+'

) i++;

long

long res=0

;

while(str[i]!='

\0'&&isdigit(str[i]))

return flag*res;

}

5 實現itoa

注意:a 正負號 b 結尾新增'\0'

char *itoa(int

num)

while(num>0

)

if(sign<0

)

temp[i]='\0'

; i--;

while(i>=0

)

str[j]='\0'

;

return

str;

}

6 不使用任何變數,如何實現計算字串長度的函式strlen()

使用變數時,strlen的實現

int strlen(const char *str)

不使用變數,實現:

int strlen(const char *s)

7 strchr實現

char *strchr(const

char *str,int

c)

8 strcmp實現

int strcmp(const

char *s,const

char *t)

return (*s-*t);

}

9 strcat實現

char *strcat(char *strdes,const

char *strsrc)

更多參考:

php 字串函式彙總

1 查詢字元位置函式 strpos str,search,int 查詢search在 str中的第一次位置從int開始 stripos str,search,int 函式返回字串在另乙個字串中第一次出現的位置。該函式對大小寫不敏感 strrpos str,search,int 查詢search在 s...

字串彙總

字串的暴力,挺無腦的,沒什麼想說的。inline void init inline int query int l,int r 第一次是橫著hash,用的是p1,此時的 h 表示的是第 i 行長度為 j 的字首串的hash值。第二次是豎著hash,用的是p2,此時的 h 發生了更新,此時的 h 變成...

PHP部分字串函式彙總

strpos str,search,int 查詢search在 str中的第一次位置從int開始 stripos str,search,int 函式返回字串在另乙個字串中第一次出現的位置 strrpos str,search,int 查詢search在 str中的最後一次出現的位置從int subm...