联想功能字符串的提取(c)

输入联想功能是非常实用的一个功能,请编程实现类似功能。要求实现函数:
void auto_complete(char *str, char *tmp,char *output)
【输入】  char *str,候选字符串
          char *tmp,输入字符串
【输出】  int *output,联想匹配的字符串
【返回】  无
说明:候选字符串以空格隔开,输入字符串仅从字符串开始处匹配。
将匹配的子字符串输出,同样以空格隔开。如无匹配成功的子字符串,则输出空字符串。
例如:
1)输入:str = chengdu chongqing,tmp = c
输出:output = chengdu Chongqing


2)输入:str = chengdu chongqing,tmp = che
输出:end = Chengdu


3)输入:str = beijing nanjing,tmp = jing

输出:end =

解题思路:

               1.审好题意;

               2.当个单词的提取,循环(下标);

               3.判断用flag;

               4.符合题意的字符串的复制,输出;

AC代码:

#include<stdio.h>
#include<string.h>
int i,j,k,t=0,flag=1;       //定义全局变量,作为下标;
char s1[1000],s2[1000],s3[1000];
void auto_complete(char *str, char *tmp,char *output)  //自定义函数 传递指针参数;
{

    for(j=0; str[j]!='\0'; )
    {
        while(str[j]==' ')j++;  //从第一个字符开始,消除空格的影响;
        k=j;                    //将单词开始的下标记录下来;
        for(i=0; tmp[i]!='\0';) //开始判断单词是否符合题意;
        {
            flag=1;                //flag用于判断中的标记;
            if(tmp[i++]!=str[j++])//依次判断是否相等
            {
                flag=0;        // 不一致将标志量置为0,
                while(str[j++]!=' ');//判断结束后,置于下个单词的开始,进行下次判断;
                break;        //跳出循环
            }
        }
        if(flag)      //符合题意,将此判断的字符串放入output中
        {
            for(; str[k]!=' '&&str[k]!='\0';)
                output[t++]=str[k++];
            output[t++]=' ';        //空格分开;
        }
    }
    output[t]='\0';                    //puts输出,最后加‘\0';
    printf("end=");                  //最后输出output;
    puts(output);
}
int main()                          //主函数
{
    char *x,*y,*z;
    x=s1,y=s2,z=s3;                  //指针初始化
    printf("请输入 候选字符串str:");
    gets(s1);                         //录入字符串
    printf("请输入 输入字符串tmp:");
    gets(s2);
    auto_complete(x,y,z);            //调用函数
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值