完成查找字符子串并的任务,使用函数完成 intreserch(char s[], char s1[])

S  =  "Woman in Love" is a popular song performed by Barbra Streisand
S1 = “love” ,
结果:love 出现在11个字符开始的位置,
S1 = “people” ,
结果:people 没有出现

利用循环遍历母串和子串,逐一比较其字符即可,下面代码是不区分大小写比较的一个实现,如下:

参考链接:
ASCII码对照表-完整ASCII码表-我就查查询


#include <stdio.h>
#include <string.h>

int  intreserch(char s[],char s1[]){
    

    
    
    int i=0,j=0,position=0;
    int find=0;
    
    char ts[100]; //用于存储将母串转为小写后的字符数组 
    char ts1[100];    //用于存储将子串转为小写后的字符数组 
    while(s[i]!='\0'){  //母串全部转为小写 
        if(s[i]>='A'&&s[i]<='Z'){
            ts[i]=s[i]+32;
        }else{
            ts[i] = s[i]; 
        }
        i++;
    }
    ts[i]='\0';
    i=0;
//    printf("ts=%s\n",ts);
    
    while(s1[i]!='\0'){ //子串全部转为小写 
        if(s1[i]>='A'&&s1[i]<='Z'){
            ts1[i]=s1[i]+32;
        }else{
            ts1[i] = s1[i]; 
        }
        i++;
    }
    ts1[i]='\0';
//    printf("ts1=%s\n",ts1);
    i=0;
    
    
    while (find==0&&ts[i]!='\0'){ //如果没有找到,则一直在母串中寻找子串,直到寻找完整个母串 
        
        j=0; //用于访问子串字符数组的下标变量,置0,表示从子串第一个位置开始比较 
        while(ts[i]!=ts1[j]&&ts[i]!='\0'){ //越过母串中前面与子串第一个字符不同的字符 
            i++;
            position=i;
        //    printf("i=%d\n",i);
        }
        
        while(ts[i]==ts1[j]&&ts[i]!='\0'&&ts1[j]!='\0'){ //逐一比较母串和子串,直到比较比较完子串或母串,以及遇到不同字母就停止 
        //    printf("i=%d j=%d\n",i,j);
            i++;
            j++;
        }
        
    //如果母串中比较完的相同字符数与子串长度相同,则说明在母串找到了子串,break退出循环,并标记find为1,说明找到子串         
        if((i-position)==strlen(ts1)){ 
        //    printf("find,j=%d,position=%d\n",j,position);
            find=1;
            break;
        }
        
        
    }
    
    if (find==1){ //如果找到,则返回在母串第几个位置找到子串,数值为找到第一次找到子串的下标+1 
        return position+1;
    }else{  //如果没有找到返回-1 
        return -1;
    }
    
    
}

int main(void){
    
    char  S[100]  =  "Woman in Love is  a popular song performed by Barbra Streisand";
    char  S1[100] = "love" ;
    
    int p = intreserch(S,S1);
    if (p!=-1){
        printf("%s出现在%d个字符开始的位置。\n",S1,p);
    }else{
        printf("%s没有出现。\n",S1);
    }
    
    
    strcpy(S1,"people");
    p = intreserch(S,S1);
    if (p!=-1){
        printf("%s出现在%d个字符开始的位置。\n",S1,p);
    }else{
        printf("%s没有出现。\n",S1);
    }
    
    return 0; 
}

img