指针函数给我整不会了

img

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

//查找big中出现smal的次数
void findstr(char*big ,char* smal,int pos[],int *nmb)
{
    int i,j,lenb,lens;
    lenb = strlen(big);
    lens = strlen(smal);
    *nmb = 0;
    if(lens > lenb)
        return;

    i = 0;
    while(i < lenb-lens+1)
    {
        for (j = 0; j < lens;j++)
        {
            if(big[i+j] != smal[j]) 
                break;
        }
        if (j == lens) //说明找到
        {
            pos[*nmb] = i;
            (*nmb)++;
            //如果只找第一个位置,可以直接在这里return
            //return;
            i += lens;
        }else
            i++;
    }
}

int main()
{
    char big[100]={0};//数组大小自己调整
    char sml[20]={0};
    int pos[20],nmb=0;
    printf("主串:");
    scanf("%s",big);
    printf("子串:");
    scanf("%s",sml);
    findstr(big,sml,pos,&nmb);
    if(nmb == 0)
        printf("主串不包含子串");
    else
        printf("位置:%d",pos[0]+1);
    return 0;
}

直接使用 char *strstr(const char *haystack, const char *needle); 你网上搜一下使用方法吧。麻烦点赞一下。