1. 程式人生 > >C++面試題之寫一個在一個字串中尋找一個子串第一個位置的函式

C++面試題之寫一個在一個字串中尋找一個子串第一個位置的函式

#include <iostream>
using namespace std;

int search_str(char *strDest ,const char *strSrc, int n )
{
    int count = 1;
    //將搜尋的字串儲存在臨時指標變數a中
    char * a = strDest;
    //開始搜尋
    while(*strSrc != '\0')
    {
        //讓strDest指向a,即字串的第一個字元,目的是在一次比較之後,讓strDest指回字串的首部。
        strDest = a;
        //判斷strSrc和strDest的當前字元是否相等
if (*strSrc == *strDest) { //當這兩個字串的當前字元相等,判斷它們是否是連續相等 while (*strDest != '\0') { //如果相等,往後判斷,直到不滿足迴圈條件,若不等,跳出該迴圈 if (*strSrc == *strDest) { count++; strSrc++; strDest++; } else
{ break; } } } //判斷所要搜尋的字串是否遍歷完,若遍歷完,則表示已找到完全相等的,跳出整個迴圈。否則繼續尋找下一個相等的部分。 if (*strDest == '\0') { break; } count++; strSrc++; } //用尋找完的總長度 - 所需搜尋的字串長度,即為它在被所搜尋字串的位置。 return
count - n; } int main(int argc, const char * argv[]) { char a[50]; char b[50]; cout<<"請輸入第一個字串a:"<<endl; cin>>a; cout<<"請輸入第二個字串b,尋找其第一個字元在a中的位置:"<<endl; cin>>b; int i = 0; //計算所需搜尋的字串的長度 while (b[i] != '\0') { i++; } cout<<"b的第一個字元在a中的位置為:第"<<search_str(b,a,i)<<endl; return 0; }

例項結果:

請輸入第一個字串a:
zhangqifangyouangfu
請輸入第二個字串b,尋找其第一個字元在a中的位置:
angf
b的第一個字元在a中的位置為:第15

歡迎指點指點。O(∩_∩)O謝謝