???注:重點介紹strcat, strlen, strcmp, strstr, strcpy 函式,簡單了解strtok函式的作用和用法,
直接步入正題
1.strlen 函式
傳參和回傳
這是一個求字串長度的函式,傳入一個字串地址,回傳這個字串的長度 (讀取到 ‘\0’ 停止),
strlen 函式的實作
size_t my_strlen(const char* str)
{
assert(str);
size_t count = 0;
while (*str++)
{
count++;
}
return count;
}
int main()
{
char arr1[] = { "abcd123" };
printf("%d", my_strlen(arr1));
return 0;
}
使用 strlen 函式的注意事項
- 由于該函式是讀取到 ‘\0’ 停止,所以要保證目標字串有 ’ \0’,
2.strcat 函式
這是一個追加字串的函式,將一個字串追加到另一個字串.
傳參和回傳
strcat 函式的實作
char * my_strcat(char* dest,const char* src)
{
assert(dest && src);//防止空指標
char* tmp = dest;
while (*dest)
{
dest++;
}
while (*dest++ = *src++)
{
;
}
return tmp;
}
int main()
{
char arr1[20] = { "abc" };
char arr2[] = { "defg" };
my_strcat(arr1, arr2);
printf("%s", arr1);
return 0;
}
使用 strcat 函式的注意事項
- destination 引數必須要帶有 ‘\0’,
- 不允許自己追加自己,
- 回傳的是 destination 字串的起始地址,
3.strcmp 函式
傳參和回傳
strcmp 函式的實作
int MY_strcmp(const char* arr1,const char* arr2)
{
assert(arr1&&arr2);
while (*arr1 == *arr2)
{
if (*arr1 == '\0')
return 0;
arr1++;
arr2++;
}
return *arr1 - *arr2;
}
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcde";
int ret = MY_strcmp(arr1,arr2);
if (ret == 0)
printf("=");
else if (ret > 0)
printf(">");
else
printf("<");
return 0;
}
使用strcmp 函式的注意事項
- 回傳值不一定是 -1 或 1 ,對應情況可能回傳的是任何 大于0 或者 小于0 的數,
- 這個函式比較的是字串的內容 (即ASCII碼的大小) ,如果一樣大,則比較后一個,直到遇到 ‘\0’ ,
4.strcpy 函式
把 源字串 拷貝到 目標字串 里,回傳 目標字串地址,
傳參和回傳
strcpy 函式的實作
char* my_strcpy(const char* dest, const char* src)
{
assert(src && dest);
char* tmp = dest;
while(*src)
{
*tmp++ = *src++;
}
return dest;
}
int main()
{
char arr1[] = { "abc" };
char arr2[] = { "xxxx" };
printf("%s",my_strcpy(arr2, arr1));
return 0;
}
使用strcpy 函式的注意事項
- destination 字串應當比 resource 字串要更長,這樣才有足夠空間放下resource 字串,造成緩沖區溢位,
5.strstr 函式
在 string字串 中查找 strCharSet子串 ,找到則回傳 符合的第一個字符的地址 ,沒有找到則回傳 空指標(NULL),
傳參和回傳
strstr 函式的實作
char* my_strstr(const char* str1,const char* str2)
{
assert(str1 && str2);
char* s1;
char* s2;
char* tmp = str1;//因為會改變字串,所以重新創建變數
if (*str2 == '\0')//判斷str2 僅有 \0 的情況
return str1;
while (*tmp)
{
s1 = tmp;
s2 = str2;
while (*s1 && *s2 && *s1 == *s2)//直到兩個字串其中一個判斷完
{
s1++;
s2++;
}
if (*s2 == '\0')
return tmp;
tmp++;
}
return NULL;
}
int main()
{
char* str1 = "abbcdef";
char* str2 = "ab";
char* ret = my_strstr(str1, str2);
if (ret == NULL)
{
printf("找不到");
}
else
{
printf("%s",ret);
}
return 0;
}
使用strstr 函式的注意事項
- 如果要找的字串長度為 0(即只有 ‘\0’) ,則直接回傳 string 字串,
-------------------------分割線-----------------------
以下是簡單了解的部分
strtok 函式
這是一個切割字串函式
傳參和回傳
第一個引數 strToken 是 要分割的字串 的地址,第二個 strDelimit 是分割符的地址,
下圖是使用實體

以上就是我學習的心得和總結啦!?📝
喜歡就可以點點贊???,評論我不足的地方哦.
作者也會隨著學習深入,繼續補充文章哦.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/303918.html
標籤:其他
上一篇:有空就來做兩道前端面試題題,你就是下一個大佬~ (9)
下一篇:桌面寵物開發——羅小黑(二)






