使用C/C++语言,编写程序,不使用C/C++库函数,实现strstr函数功能。
思路:Linux函数原型:char *strstr(const char *haystack, const char *needle);如:haystack="abcdefghij", needle="cde",函数返回cdefghij。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
using namespace std;
char* mystrstr(const char *pStr1, const char *pSubStr)
{
if (pStr1 == NULL || pSubStr == NULL) {
assert(0);
}
const char* pTmpStr = NULL;
const char* pTmpSub = NULL;
while (*pStr1 != '\0') {
pTmpStr = pStr1;
pTmpSub = pSubStr;
while (*pTmpSub != '\0') {
if (*pTmpSub != *pTmpStr) {
break;
}
++pTmpSub;
++pTmpStr;
}
if (*pTmpSub == '\0') {
return const_cast<char*>(pStr1);
}
++pStr1;
}
return NULL;
}
int main()
{
char szBuf1[32] = { 0 };
strcpy(szBuf1, "abcdefghij");
char *pResult = strstr(szBuf1, "cde");
printf("pResult=[%s]\n", pResult);
pResult = mystrstr(szBuf1, "cde");
printf("pResult=[%s]\n", pResult);
return 0;
}
程序运行结果如下: