linux c语言的split函数和空格处理函数

java中经常用到split方法,c中要自己实现,split干嘛用的我就不说了不了解的同学百估一下吧,不说直接上源码:

/*
参数:
    parent 要分割的对象字符串
    div 分隔符
    index 分割后需要返回索引
    val 返回对于索引字符串
返回值
    0成功-1失败
*/
int strSplit(char * parent,char div,int index,char * val)
{
        char * pp,*p0,*p1;
        p0=parent;
        pp=parent-1;
        if(index<0)
        {
            return -1;
        }
        do{
                p1=pp+1;
                pp=strchr(p0,div);
                if(NULL==pp)
                {
                    if(0==index)
                    {
                        strncpy(val,p0,strlen(p0));
                        return 0;
                    }
                    else
                    {
                        return -1;
                    }
                }
                p0=pp+1;
        }while((--index>=0)&&(pp!=NULL));
        if(pp==NULL)
                return -1;
        strncpy(val,p1,pp-p1);
        val[pp-p1]=0;
        return 0;
}

另外两个处理空格函数

/*删除空格*/
void delspace(char *p1)
{
   char *p2;
  while (*p1 != '\0' )
  {
   if (*p1 == ' ')
   {
    p2 = p1;
    while(*p2 != '\0')
    {
     *p2 = *(p2+1);
     p2++;
    }
    p1--;
   }
  p1++;
  }
}
/*多个空格只保留一个空格做为间隔*/
void delspaceEx(char *p1)
{
    char *p2;
    int flag =0;
    while (*p1 != '\0' )
    {
        if (*p1 == ' ')
        {
            flag++;
            if(flag>1)
            {
                flag --;
                p2 = p1;
                while(*p2 != '\0')
                {
                    *p2 = *(p2+1);
                    p2++;
                }
                p1--;
            }
        }
        else
        {
            flag = 0;
        }
        p1++;
    }
}


你可能感兴趣的:(linux c语言的split函数和空格处理函数)