字串分離 split

來源:互聯網
上載者:User
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>//申請二維數組char **new2arr(int v,int h){char **dest;int i=0;assert(v>0 && h>0);dest=(char **)malloc(sizeof(char*)*v);for(i=0;i<v;++i){dest[i]=(char*)malloc(sizeof(char)*(h+1)); //加一位儲存'\0'}return dest;}//釋放二級數組void free2arr(char **src,int v,int h){int i=0;for(i=0;i<v;++i){free(src[i]);}free(src);}/** * src源字串,delimiter分隔字元,pvlen用返回,二維數組的維數,phlen 每維元素的個數 */char** strsplit(const char* src,const char* delimiter,int *pvlen,int *phlen){int hlen=0,vlen=0,i=0;char *p=src,*q=NULL,**dest;if(src==NULL || delimiter==NULL || *src=='\0' || delimiter=='\0') return NULL;while( (q=strstr(p,delimiter)) || (q=strchr(p,'\0')) ){++vlen;if(hlen<q-p) hlen=q-p;if(*q=='\0') break;p=++q;}dest=new2arr(vlen,hlen);p=src;i=0;while((q=strstr(p,delimiter)) || (q=strchr(p,'\0')) ){memcpy(dest[i],p,sizeof(char)*(q-p));dest[i++][q-p]='\0';if(*q=='\0') break;p=++q;}*pvlen=vlen;*phlen=hlen;return dest;}int main(void) {int hlen,vlen,i;char **dest=strsplit("ab cde figh io"," ",&vlen,&hlen);for(i=0;i<vlen;++i){puts(dest[i]);}free2arr(dest,vlen,hlen);return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.