### 不使用 C 函数，实现字符串查找

在开发应用程序时，经常需要进行字符串处理操作。例如，查找字符串中的一个子串。而本例的题目要求不使用系统函数，实现字符串查找，这通常来自于面试题，考察面试人员对字符串的理解。

答案

（1）创建一个控制台应用程序。

（2）编写一个字符串查找函数，实现字串的查找。

int FindString(char szSrc[], int nSrcLen, char szSub[], int nSubLen)

{

char* pszItem = szSrc; //定义字符指针，指向源字符串

int nSum = 0;

for(int i=0; i<nSrcLen-1; i++) //遍历源字符串

{

if (szSrc[i] == szSub[0]) //匹配首字母字符

{

nSum = 1;

for(int j=1; j<nSubLen; j++) //匹配其他字符

{

if (szSrc[i+1] = szSub[j])

{

nSum++;

}

else

{

nSum = 0;

}

}

}

if(nSum >= nSubLen) //匹配是否成功

return i;

}

return -1;

}

（3）在 main 函数中定义两个字符串，并调用 FindString 函数查找字符串。

int main(int argc, char* argv[])

{

char szText[] = "Welcome to MINGRIKEJI";

char szSub[]= "to";

int nFindPos = FindString(szText, 21, szSub, 2);

if (nFindPos != -1)

{

cout << "找到子串，位于" << nFindPos << "位置处!" << endl;

}

return 0;

}

效果如图 1 所示。

图 1 字符串查找