最简字符串查找操作(静态顺序串,非链串)

// demo3.cpp : 定义控制台应用程序的入口点。
//程序实现从母串中找到字串,并且输出字串在母串中的位置
//audi.car@qq.com    
//2015年4月4日10:44:04

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
    char a[]="i boy a boy"; //母串
    char b[]="boy";            //字串
    int m=sizeof(a)-1;//母串长度
    int n=sizeof(b)-1;//字串长度
    int pos=0;        //字串在母串中的位置
    int temp=0;        //临时工
    for (int i=0;i<m;i++)
    {
        temp=i;//暂存母串数据起始位置
        for (int j=0;j<n;j++)
        {
            if (a[i]!=b[j])
                break;
            i++;
            if (j==n-1)
            {
                pos=temp;
                cout<<"字串在母串的第 "<<pos+1<<" 个位置"<<endl;
            }
        }
        i=temp;//串字符不匹配  返回母串原来位置的下一个字母继续查找
    }
    return 0;
}

修改了一下源码,主要是为了实现字符串的实时录入,可以进一步修改为文本单词统计程序,这个比较简单 就不上源码了。可以参考http://hi.baidu.com/audi_car/item/c3c1803c7a72a3dc1b9696ba

// demo3.cpp : 定义控制台应用程序的入口点。
//程序实现从母串中找到字串,并且输出字串在母串中的位置
//audi.car@qq.com    
//2015年4月4日10:44:04
//
//程序改动主要为:实现了字符串的实时输入
//2015年4月4日11:46:32

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
    char a[300];        //母串
    char b[10];            //字串
    cout<<"请输入母串(不要超过300个字符) ";
    cin.getline(a,300);    //getline()函数可以接受三个参数,第三个参数为输入结束符  缺省默认为回车符
    cout<<"请输入字串(不超过10个字符)";
    cin.getline(b,10);
    //cout<<strlen(a)<<endl;
    //int m=sizeof(a)-1;//母串长度
    //int n=sizeof(b)-1;//字串长度
    int m=strlen(a);
    int n=strlen(b);   //使用strlen()函数替代sizeof()函数
    int pos=-1;        //字串在母串中的位置
    int temp=0;        //临时工
    for (int i=0;i<m;i++)
    {
        temp=i;//暂存母串数据起始位置
        for (int j=0;j<n;j++)
        {
            if (a[i]!=b[j])
                break;
            i++;
            if (j==n-1)
            {
                pos=temp;
                cout<<"字串在母串的第 "<<pos+1<<" 个位置"<<endl;
            }
        }
        i=temp;//串字符不匹配  返回母串原来位置的下一个字母继续查找
        
    }
    if (pos==-1)
        cout<<"母串中找不到要查找的字串"<<endl;
    return 0;
}

转载于:https://www.cnblogs.com/audi-car/p/4391892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值