C语言:字符串子串判断

来源:互联网 发布:java编程视频教程 编辑:程序博客网 时间:2024/05/16 11:32

突然想起小学期里字符串子串判断的题目,之前的写法是用循环匹配,总感觉写法欠妥

试着用递归写了一次子串匹配,就当换个思路吧

运行图:
这里写图片描述

代码:

#include<stdio.h>void judge_strings(char* string,char* subString,int p_string,int p_subString,int &result){//每次对当前位置的string和subString进行字符匹配,如果相同就继续循环,不同就退出    if (subString[p_subString] == '\0')    {        result = 1;        return;    }    if (string[p_string] == subString[p_subString])    {        judge_strings(string, subString, p_string + 1, p_subString + 1,result);    }}int main(){    char string[100];   //存储较长的字符串    char subString[20]; //存储子串用来判断    int i_string = 0;   //长字符串的计数变量    int i_subString = 0;//子串的计数变量    int result = 0;     //匹配结果    puts("\tInput a long string:");    scanf("%s", string);    puts("\tInput a short one:");    scanf("%s", subString);    while (string[i_string] != '\0')//长字符串循环    {        if (string[i_string] == subString[i_subString])//i_subString确认相等的时候应该等于0        {            judge_strings(string, subString,i_string,i_subString,result);            if (result == 1)                break;        }        ++i_string;        i_subString = 0;//保证每次循环subString的计数变量一直为0    }    //输出结果    if (result == 1)    {        printf("[%s] IS a substring of [%s].\n", subString,string );    }    else    {        printf("[%s] is NOT a substring of [%s].\n",subString,string);    }    getchar();    getchar();    return 0;}
原创粉丝点击