c语言 分离字符串

来源:百度知道 编辑:UC知道 时间:2024/06/26 06:16:49
我有这样一个数字串,
num,1,1,1;2,2,2,2,2;3,3,3,3;
num 表示后面分号的个数
但是分号之间的数字长度是不一样的,也是不固定的,如何将分号分开的部分,分别提出来。
如上面的结果是
num,1,1,;
2,2,2,2,2;
3,3,3,3;
这几部分分别存放。用c如何实现。
我也觉得是要用二维数组指针,但是不知道怎么写比较好。
num表示分号的个数(包括最后一个)上面的例子num是等于3的,num也是不固定的。

#include "stdio.h"
#include "stdlib.h"
void main()
{
char str[81]="3,1,1,1;2,2,2,2,2;3,3,3,3;";
int num;
char **p;
int i;
sscanf(str,"%d",&num);
p=(char **)malloc(num*sizeof(char *));
char *t1,*t2;
t1=str;
for(i=0;i<num;i++)
{
t2=t1;
while(*t2!=';') t2++;
p[i]=(char *)malloc((t2-t1+2)*sizeof(char));
char *temp=p[i];
while(t1<=t2) *temp++=*t1++;
*temp='\0';
}
for(i=0;i<num;i++)
printf("%s\n",p[i]);

for(i=0;i<num;i++)
free(p[i]);
free(p);
}

建立二维数组指针
用while循环

char * * arr;

char [num] * arr;

if判断 =1 =2 =3 分别执行

貌似需要用数组?