天天看點

筆試練習題

字元串操作:不調用任何系統函數,實作一個字元串查找子串的函數,如果包含字串,則傳回該字元串的位置值,如果不包含,則傳回-1。

//查找子串

#include <iostream>
using namespace std;

#define CM_ERROR  -1;

int findSub(char* pSrc,char* pDes)
{
	if(NULL == pSrc || NULL == pDes)
	{
		//pDes = "\0";
		return CM_ERROR;
	}
	int iPos = 1;
	char* pTmp;
	while('\0' != *pSrc)
	{
        pTmp = pDes;
		while(*pSrc != *pTmp)
		{
			if(*pSrc == '\0')
			{
				return CM_ERROR;
			}
			pSrc++;
			iPos++;
		}
		while((*pSrc == *pTmp)&&('\0' != *pTmp))
		{
			pSrc++;
			pTmp++;
		}
		if(*pTmp !='\0')
		{
			iPos += 1;
		}
		else
			break;		
		
	}
	if(*pTmp=='\0')
	{
		return iPos;
	}
	else
		return CM_ERROR;
}

int main(int argc, char const *argv[])
{
	char chSrc[]= "hello world";
	char chDes[] = "ldd";
	int iPosition = findSub(chSrc,chDes);
	cout<<iPosition<<endl;
	system("pause");
	return 0;
}
           

繼續閱讀