查找字符串子串出现的位置 str1是字符串 str2是子串 运行没有结果


#include<stdio.h>
#include<string.h>
void search(char *str1,char *str2){
    int n,flag=0;
    char *p,*q;
    p=str1;
    q=str2;
    while(*q){
        if((*p==*q)&&(*p!='\0')&&(*q!='\0')){
            p++;
            q++;
    }
    if(flag==0){
        printf("0");
    }

}
int main(){
    char str1[99
        }
        if(*p='\0'){
            printf("%d",n);
            flag=1;
        }
        str2++;
        n++;9],str2[999];
    gets(str1);
    gets(str2);
    search(str1,str2);
    
}


#include<stdio.h>
#include<string.h>
void search(char* str1, char* str2) {
    int n=0, flag = 0;
    char* p, * q;
    p = str1;
    q = str2;
    while (*q) {
        if ((*p == *q) && (*p != '\0') && (*q != '\0')) {
            p++;
            q++;
        }
        if (flag == 0) {
            printf("0");
        }
    }
    
    if (*p = '\0') {
        printf("%d", n);
        flag = 1;
    }
    str2++;
    n++;
}
int main() {
    char str1[99], str2[999];
    gets_s(str1);
    gets_s(str2);
    search(str1, str2);
}

第20行是什么情况?

#include <stdio.h>
#include <string.h>
char temp_str[30];    // 临时子串
void ReadStrUnit(char * str,char *temp_str,int idx,int len)  // 从母串中获取与子串长度相等的临时子串
{
    int index = 0;
    for(index; index < len; index++)
    {
        temp_str[index] = str[idx+index];
    }
    temp_str[index] = '\0';
}

int GetSubStrPos(char *str1,char *str2)
{
    int idx = 0;
    int len1 = strlen(str1);
    int len2 = strlen(str2);

    if( len1 < len2)
    {
        printf("error 1 \n"); // 子串比母串长
        return -1;
    }

    while(1)
    {
        ReadStrUnit(str1,temp_str,idx,len2);    // 不断获取的从 母串的 idx 位置处更新临时子串
        if(strcmp(str2,temp_str)==0)break;      // 若临时子串和子串一致,结束循环
        idx++;                                  // 改变从母串中取临时子串的位置
        if(idx>=len1)return -1;                 // 若 idx 已经超出母串长度,说明母串不包含该子串
    }

    return idx;    // 返回子串第一个字符在母串中的位置
}

int main()
{
    char str1[250];
    char str2[250];
    puts("输入str1:"); 
    gets(str1);
    puts("输入str2:");
    gets(str2);
    int i = 0;
    i = GetSubStrPos(str1,str2);
    if( i<0 )
    {
        printf("not found\n");
    }
    else
    {
        printf("i = %d\n",i);
    }
    return 0;
}

//参考自:https://blog.csdn.net/u011303443/article/details/70146384