时间:2014.06.03
地点:基地
----------------------------------------------------------------------------------
一、函数功能
判断一个字符串是否是另外一个字符串的子字符串,并返回一个子字符串在另一个字符串中第一次出现的位置。没有则返回为空。注意:空字符串是任何字符串包括空字符串本身的子串
----------------------------------------------------------------------------------
二、思路
对于源字符串,即大字符串,我们假设字符串在大字符串中位置从大字符串首开始,若不是,则切换到第二个字符开始,由此可设定一个首位置游标,不断地在大字符中往后面移动。对于每个游标指定的首位置,我们对子字符串和大字符串游标开始处往后面一一比较,若中间碰到不相等字符,则马上break,进入下一轮迭代。若果一直对于每个字符相等,直到子字符串已经到了最后,即到了 ’\0' 这个字符,表明是大字符串中的一个子字符串,返回那个首位置游标。还一种情况是若大字符串的游标到了末尾还没匹配到,则说明匹配失败,小字符不是大字符串的子字符串。
----------------------------------------------------------------------------------
三、代码实现
char* StrStr(char* source_str, char* dest_str){
for (;; ++source_str) {
char* s_ptr = source_str;
for (char* d_ptr = dest_str;; ++s_ptr, ++d_ptr){
if (!*d_ptr)
return s_ptr;
if (*d_ptr != *s_ptr)
break;
}
if (!*s_ptr)
return nullptr;
}
}