C++面试题之写一个在一个字符串中寻找一个子串第一个位置的函数

来源:互联网 发布:telnet端口命令 编辑:程序博客网 时间:2024/05/08 12:42
#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谢谢

0 0
原创粉丝点击