字符串copy函数

//避免操作空指针以及引入辅助指针变量增强程序的健壮性
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int str_cpy06(char *from, char *to)
{
    char * tmpfrom = from;//避免修改形参

    char * tmpto = to;

    if (from == NULL || to == NULL)//避免操作空指针
        return -1;

    while (*tmpto++ = *tmpfrom++);

    printf("from:%s\n",from);
    return 0;
}

int main(void)
{
    char *src = "abcd";

    char buf[64];


    str_cpy06(src, buf);
    printf("buf:%s\n", buf);

    system("PAUSE");
    return 1;
}

字符串查找函数

strstr–do-while模型(strstr模型)

#define _CRT_SECURE_NO_WARNINGS

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

int getCountDoWhile(char * p_str, char *sub_str, int *ncount)
{
    int ret = 0;

    char * src = p_str;
    int tmp_count = 0;

    if (p_str == NULL || sub_str == NULL || ncount == NULL)//合法性检测
    {
        ret = -1;
        printf("%s is error:(p_str == NULL || sub_str == NULL || ncount == NULL)\n", __FUNCTION__);
        return  ret;
    }

    do{
        src = strstr(src, sub_str);
        if (src != NULL)
        {
            tmp_count++;
            src += strlen(sub_str);
        }
        else{
            break;
        }


    } while (*src != '\0');

    *ncount = tmp_count;

    return ret;
}

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

    char *p = "11abcd111122abcd3333322abcd3333322qqq";
    ret = getCountDoWhile(p,"abcd",&ncount);

    if (ret != 0){
        printf("func getCountDoWhile() err:%d \n", ret);
        return ret;
    }

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

while模型

#define _CRT_SECURE_NO_WARNINGS


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

int getCountWhile(char * p_str, char *sub_str, int *ncount)
{
    int ret = 0;

    char * src = p_str;
    int tmp_count = 0;

    if (p_str == NULL || sub_str == NULL || ncount == NULL)//合法性检测
    {
        ret = -1;
        printf("%s is error:(p_str == NULL || sub_str == NULL || ncount == NULL)\n", __FUNCTION__);
        return  ret;
    }
    while (src = strstr(src,sub_str)){
        tmp_count++;
        src += strlen(sub_str);
        if (*src == '\0')
            break;
    }
    *ncount = tmp_count;
    return ret;
}
int main(void)
{
    //strstr(str, str2)
    int ncount = 0;
    int ret = 0;

    char *p = "11abcd111122abcd3333322abcd3333322qqq";
    ret = getCountWhile(p, "abcd", &ncount);

    if (ret != 0){
        printf("func getCountWhile() err:%d \n", ret);
        return ret;
    }

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