zoukankan      html  css  js  c++  java
  • C提高_day03_两个辅助指针变量挖字符串(强化2)

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    //两个辅助指针变量挖字符串, 的第三种内存模型
    char ** spitString3(char *buf1,char c,int *count)    //**pp二级指针做输入
    {
    
        char *p=NULL, *pTmp = NULL;
        int    tmpcount = 0;
        char **myp=NULL;
    
        //1 p和ptmp初始化
        p = buf1;
        pTmp = buf1;
        
        //第一遍求出count
    
        do
        {
            //2 检索符合条件的位置 p后移  形成差值 挖字符串
            p = strchr(p, c);
            if (p != NULL)
            {
                if (p-pTmp > 0)
                {
                    tmpcount ++;
                    //3重新 让p和ptmp达到下一次检索的条件
                    pTmp = p = p + 1;
                }
            }
            else
            {
                break;
            }
        } while (*p!='');
    
        //根据多少行精确分配内存
        myp=(char **)malloc(tmpcount * sizeof(char *));
        if(myp==NULL)
        {
            return NULL;
        }
    
    
          /////////////////////////////////////////////////////////
    
        tmpcount=0;
        //1 p和ptmp初始化
        p = buf1;
        pTmp = buf1;
        
        do
        {
            //2 检索符合条件的位置 p后移  形成差值 挖字符串
            p = strchr(p, c);
            if (p != NULL)
            {
                if (p-pTmp > 0)
                {
                    int len=p-pTmp+1;
                    myp[tmpcount]=(char *)malloc(len * sizeof(char));
                    if(myp==NULL)
                    {
                        return NULL;
                    }
                    strncpy(myp[tmpcount], pTmp,  p-pTmp);
                    myp[tmpcount][p-pTmp]='';
                    tmpcount ++;
                    //3重新 让p和ptmp达到下一次检索的条件
                    pTmp = p = p + 1;
                }
            }
            else
            {
                break;
            }
        } while (*p!='');
    
    
        *count = tmpcount;
        return myp;
    
    }
    
    void main()
    {
        int i,ret=0;
        char *p1="abcdef,aaa,eeeee,ffffff,a3a3a3,";
        char tmp=',';
        char **p=NULL;
        int nCount;
    
        p=spitString3(p1,tmp,&nCount);
    
        if(p==NULL)
        {
            printf("fun spiltString() err:%d 
    ",ret);
            return ret;
        }
    
        for(i=0;i<nCount;i++)
        {
            printf("%s 
    ",p[i]);
        }
    
        for(i=0;i<nCount;i++)
        {
            free(p[i]);
        }
        free(p);
    
        printf("%d 
    ",nCount);
        printf("hello...
    ");
        system("pause");
    
    }

    U5FL2P~I1QM[V%N@%V7U4YK

    Stay hungry,Stay foolish
  • 相关阅读:
    学习java集合LinkedHastSet
    学习java,equals方法
    学习java,入门语言java的感概
    学习java哈希值,java入门编程语言
    学习java集合HashSet
    学习java集合set集合
    学习java集合LinkedList
    学习java集合Arraylist
    学习java集合list集合
    学习Java数据结构(入门选Java)
  • 原文地址:https://www.cnblogs.com/zhesun/p/4996343.html
Copyright © 2011-2022 走看看