zoukankan      html  css  js  c++  java
  • 多级指针使用分割字符串

    两个赋值指针挖字符串

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    int spitString(const char *buf1,char c,char buf2[10][30],int *count)
    {
        char *p = NULL, *pTmp = NULL;
        int tmpcount = 0;
        
        p = buf1;
        pTmp = buf1;
        
        do
        {
            p = strchr(p,c);
            if(p != NULL)
            {
                if(p-pTmp > 0)
                {
                    strncpy(buf2[tmpcount],pTmp,p-pTmp);
                    buf2[tmpcount][p-pTmp] = '';
                    tmpcount++;
                    pTmp = p = p + 1;
                }
            }
            else
            {
                break;
            }
        }while(*p != '');
        
        *count = tmpcount;
        return 0;
    }
    
    int main()
    {
        int iRet = 0, i = 0;
        char *p1 = "abcdef,acccd,eeee,aaaa,e3eeee,ssss,";
        char cTem = ',';
        int nCount;
        
        char myArray[10][30];
        
        iRet = spitString(p1,cTem,myArray,&nCount);
        if(iRet != 0)
        {
            printf("fun spitString() error : %d 
    ",iRet); 
        }
        
        for(i = 0; i < nCount; i++)
        {
            printf("%s 
    ",myArray[i]);
        }
        return 0;
    }

    使用第三种内存模型

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    int spitString2(const char *buf1,char c,char **myp,int *count)
    {
        char *p = NULL, *pTmp = NULL;
        int tmpcount = 0;
        
        p = buf1;
        pTmp = buf1;
        
        do
        {
            p = strchr(p,c);
            if(p != NULL)
            {
                if(p-pTmp > 0)
                {
                    strncpy(myp[tmpcount],pTmp,p-pTmp);
                    myp[tmpcount][p-pTmp] = '';
                    tmpcount++;
                    pTmp = p = p + 1;
                }
            }
            else
            {
                break;
            }
        }while(*p != '');
        
        *count = tmpcount;
        return 0;
    }
    
    int main()
    {
        int iRet = 0, i = 0;
        char *p1 = "abcdef,acccd,eeee,aaaa,e3eeee,ssss,";
        char cTem = ',';
        int nCount;
        
        char **p = NULL;
        p = (char **)malloc(10 * sizeof(char *));
        if(p == NULL)
        {
            return;
        }
        
        for(i = 0; i < 10; i++)
        {
            p[i] = (char *)malloc(30 * sizeof(char));
        }
        
        iRet = spitString2(p1,cTem,p,&nCount);
        if(iRet != 0)
        {
            printf("fun spitString() error : %d 
    ",iRet); 
        }
        
        for(i = 0; i < nCount; i++)
        {
            printf("%s 
    ",p[i]);
        }
        
        for( i = 0; i < 10; i++)
        {
            free(p[i]);
        }
        free(p);
        return 0;
    }
  • 相关阅读:
    136. 只出现一次的数字
    Eclipse Git Pull报 cannot open git-upload-pack错误的解决方案
    数据结构和算法1 稀疏数组
    Netty学习二 TCP粘包拆包以及Netty解决TCP粘包拆包
    Java值传递和引用传递
    Git命令教程
    Properties文件载入工具类
    有序的properties的工具类
    对象操作工具类
    反射工具类
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11644309.html
Copyright © 2011-2022 走看看