strstr
- strstr函式的介紹
- 宣告
- 引數
- 回傳值
- strstr函式的模擬實作
- 簡單使用
- 模擬實作
strstr函式的介紹
宣告
strstr函式是c庫函式的一種,使用時需要引#include<string.h>,在字串 str1 中查找第一次出現字串 str2 的位置,不包含終止符 ‘\0’,
引數
str1–要被搜索的原字串
str2–子字串
回傳值
const char * strstr ( const char * str1, const char * str2 );
回傳的時在str1中第一次出現str2的位置,如果沒有,則回傳NULL
strstr函式的模擬實作
簡單使用
int main()
{
char* arr1 = "abcdef";
char* arr2 = "cde";
char* ret = strstr(arr1, arr2);
printf("%s\n", ret);
return 0;
}
模擬實作
在設計strstr函式的時候先斷言str1和str2不是空指標
然后整體思路是先從str1中的第一個字符為起點開始進行一次匹配查找,
當這個字符與str2的第一個字符相等時讓兩個地址同時加一,往后尋找(當找到空指標的時候要停止,無論是str1的空指標還是str2的空指標)
如果沒找到,str1要回到開始點的下一個字符再次尋找,因此我們需要創建一個cp將值賦給s1.而str2則要返還首字符,因此我們創建一個s2,進行賦值,
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 != NULL);//斷言str1和str2不是空指標
assert(str2 != NULL);
const char* s1 = str1;
const char* s2 = str2;
const char* cp = str1;
while (*cp)
{
//一次匹配查找的程序
s1 = cp;
s2 = str2;
while (*s1 & *s2 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return cp;
}
cp++;
}
return NULL;
}
int main()
{
char* arr1 = "abcdef";
char* arr2 = "cde";
char* ret = my_strstr(arr1, arr2);
printf("%s\n", ret);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267456.html
標籤:其他
上一篇:結構體+列舉+聯合體
下一篇:[re入門]音樂檔案加密破解
