字符串做函数参数

时间:2022-11-09 19:02:00
#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

//char *p = "abcd111122abcd3333322abcd3333322qqq"; 
//求字符串p中 abcd出现的次数
//1请自定义函数接口,完成上述需求 50 // i++ ++ ++
//2 自定义的业务函数 和 main函数必须分开  50

void main81()
{
    //strstr(str, str2)
    int ncount = 0;

    //初始化 让p指针达到查找的条件
    char *p = "11abcd111122abcd3333322abcd3333322qqq";  

    do 
    {
        p = strstr(p, "abcd");
        if (p != NULL)
        {
            ncount++; //
            p = p + strlen("abcd"); //指针达到下次查找的条件
        }
        else
        {
            break;
        }
    } while (*p != '\0');


    printf("ncount:%d \n", ncount);
    system("pause");
    return ;
}

void main88()
{
    int ncount = 0;

    //初始化 让p指针达到查找的条件
    char *p = "2abcd3333322qqqabcd";  
    while ( p = strstr(p, "abcd"))
    {
        ncount ++;
        p = p + strlen("abcd"); //让p指针达到查找的条件
        if (*p == '\0')
        {
            break;
        }
    }
    printf("ncount:%d \n", ncount);

    printf("hello...\n");
    system("pause");
}

//char *p = "abcd111122abcd3333322abcd3333322qqq"; 
//求字符串p中 abcd出现的次数
//1请自定义函数接口,完成上述需求 50 // i++ ++ ++
//2 自定义的业务函数 和 main函数必须分开  50
int getCount(char *mystr /*in*/, char *sub /*in*/,int *ncount)
{
    int ret = 0;
    int tmpCount = 0;
    //初始化 让p指针达到查找的条件
    char *p = mystr; //不要轻易改变形参的值

    if (mystr==NULL || sub==NULL ||ncount==NULL)
    {
        ret = -1;
        printf("func getCount() err:%d (mystr==NULL || sub==NULL ||ncount==NULL) \n", ret);
        return ret;
    }

    do 
    {
        p = strstr(p, sub);
        if (p != NULL)
        {
            tmpCount++; //
            p = p + strlen(sub); //指针达到下次查找的条件
        }
        else
        {
            break;
        }
    } while (*p != '\0');

    *ncount = tmpCount; //间接赋值是指针存在的最大意义
    return ret;
}

int main()
{
    int ret = 0;
    char *p = "abcd111122abcd3333322abcd3333322qqq"; 
    int count = 0;
    char sub[] = "abcd";

    ret = getCount(p,sub,  &count);
    if (ret != 0)
    {
        printf("func getCount() err:%d \n", ret);
        return ret;
    }

    ret = getCount(p,NULL,  &count);
    if (ret != 0)
    {
        printf("func getCount() err:%d \n", ret);
        return ret;
    }
    printf("count:%d \n", count);
    system("pause");
}