如果本文對大家有用的話,請留下個贊吧( ﹡?o?﹡ )

如果大家有好的意見或者疑問請留在評論區(qū),看見了一定認真考慮!O(∩_∩)O~~
函數(shù)原型:size_t strlen(const char *string);
作用:返回字符串長度
實現(xiàn):從第一個字符開始數(shù),直到遇見\0停止(\0不算入其中,遇見空格也算入其中)。
例子:
#include#includeint main(){
char arr[]="I love China"
int len =strlen(arr);
printf("%d",len);
} 最終輸出結(jié)果為:12
注意事項:
即size_t-size_t一定的結(jié)果是按無符號的解讀的(一定大于等于0)
例如:strlne("abc")-strlen("abcd")是大于零的
模擬實現(xiàn):
1.循環(huán)版
#include#include
int my_strlen(const char* str) {
assert(str);
int count = 0;//計數(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會被拷貝,所以后面的打印的時候不會出現(xiàn))
如圖:
實現(xiàn):從source開始向后一直到遇見\0為止,\0也會拷貝;最后返回指針destination指向位置。
例子:
#include#includeint main() {
char str1[20] = {”####“};
char str2[] = "I love China";
printf("%s", strcpy(str1, str2));
return 0;
} 最終輸出結(jié)果為:I love China
注意事項:
ps:如果源字符串沒有\(zhòng)0,就會出現(xiàn)以下結(jié)果,如圖:
ps:destination不能是const char *類型
ps:當目標空間較小,不能完全拷貝,就會越界訪問,但是還是會強行將后面的拷貝進去。
模擬實現(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也會過去)
實現(xiàn):找到*strDest中的\0,然后從\0開始連接,直到遇見 *strSrc中的\0為止。(連接過程與strcpy有點相似),最后返回指針strDest指向位置。
例子:
#include#includeint main() {
char strDest[20] = "holle ";
const char strSrc[] = "world!";
printf("%s", strcat(strDest, strSrc));
} 最終輸出為:holle world!
注意事項:
ps:三個注意事項的錯誤結(jié)果同strcpy
模擬實現(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海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁標題:C語言中字符串與庫函數(shù)的那些事(+模擬實現(xiàn))-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.chinadenli.net/article32/docesc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、面包屑導(dǎo)航、微信公眾號、做網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容