如果本文對(duì)大家有用的話,請(qǐng)留下個(gè)贊吧( ﹡?o?﹡ )
成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、內(nèi)黃網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為內(nèi)黃等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。如果大家有好的意見或者疑問請(qǐng)留在評(píng)論區(qū),看見了一定認(rèn)真考慮!O(∩_∩)O~~
函數(shù)原型:size_t strlen(const char *string);
作用:返回字符串長(zhǎng)度
實(shí)現(xiàn):從第一個(gè)字符開始數(shù),直到遇見\0停止(\0不算入其中,遇見空格也算入其中)。
例子:
#include#includeint main(){
char arr[]="I love China"
int len =strlen(arr);
printf("%d",len);
}
最終輸出結(jié)果為:12
注意事項(xiàng):
即size_t-size_t一定的結(jié)果是按無符號(hào)的解讀的(一定大于等于0)
例如:strlne("abc")-strlen("abcd")是大于零的
模擬實(shí)現(xiàn):
1.循環(huán)版
#include#include
int my_strlen(const char* str) {
assert(str);
int count = 0;//計(jì)數(shù)
while (*str++ != '\0')
count++;
return count;
}
int main() {
char arr[] = "I love China";
int len = my_strlen(arr);
printf("%d", len);
}
2.遞歸版
#include#include
int my_strlen(const char* str) {
assert(str);
if (*str++ != '\0') return 1 + my_strlen(str);
return 0;
}
int main() {
char arr[] = "I love China";
int len = my_strlen(arr);
printf("%d", len);
}
3.指針-指針版
#include#include
int my_strlen(const char* str) {
assert(str);
const char* end = str;
while (*end != '\0')end++;//end最終指向\0;
return end-str;
}
int main() {
char arr[] = "I love China";
int len = my_strlen(arr);
printf("%d", len);
}
函數(shù)原型:char* strcpy(char *destination,const char * source)
作用:將指針source指向的字符串拷貝到指針destination指向的空間中,destination中原有的被替代,但是沒有被拷貝的地方內(nèi)容不變(\0會(huì)被拷貝,所以后面的打印的時(shí)候不會(huì)出現(xiàn))
如圖:
實(shí)現(xiàn):從source開始向后一直到遇見\0為止,\0也會(huì)拷貝;最后返回指針destination指向位置。
例子:
#include#includeint main() {
char str1[20] = {”####“};
char str2[] = "I love China";
printf("%s", strcpy(str1, str2));
return 0;
}
最終輸出結(jié)果為:I love China
注意事項(xiàng):
ps:如果源字符串沒有\(zhòng)0,就會(huì)出現(xiàn)以下結(jié)果,如圖:
ps:destination不能是const char *類型
ps:當(dāng)目標(biāo)空間較小,不能完全拷貝,就會(huì)越界訪問,但是還是會(huì)強(qiáng)行將后面的拷貝進(jìn)去。
模擬實(shí)現(xiàn):
#include#include
char* my_strcpy(char* destination, const char* source) {
assert(destination);
assert(source);
char* str1 = destination;
const char* str2 = source;
while (*str1++ =*str2++) ;
return destination;
}
int main() {
char str1[20] = {"################"};
char str2[] = "II love China";
printf("%s", my_strcpy(str1, str2));
return 0;
}
函數(shù)原型: char *strcat(char *strDest,const char *strSrc) ;
作用:將strSrc指向的字符串連接到strDest指向字符串的后面(strSrc的\0也會(huì)過去)
實(shí)現(xiàn):找到*strDest中的\0,然后從\0開始連接,直到遇見 *strSrc中的\0為止。(連接過程與strcpy有點(diǎn)相似),最后返回指針strDest指向位置。
例子:
#include#includeint main() {
char strDest[20] = "holle ";
const char strSrc[] = "world!";
printf("%s", strcat(strDest, strSrc));
}
最終輸出為:holle world!
注意事項(xiàng):
ps:三個(gè)注意事項(xiàng)的錯(cuò)誤結(jié)果同strcpy
模擬實(shí)現(xiàn):
#include#include
char* my_strcat(char* Dest, const char* Src) {
assert(Dest);
assert(Src);
char* str = Dest;
while (*++str);
while (*str++ = *Src++);
return Dest;
}
int main() {
char strDest[20] = "holle ";
const char strSrc[] = "world!";
printf("%s", my_strcat(strDest, strSrc));
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧