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