有没有高手可以为下面这段解析字符串程序做优化?
/*此功能是解析一字符串,并将解析的结果分别存放。
如字符串arr的值为"10,20,30,40,50,60,70"。指定分析存放第N个逗号之后的内容。如指定第三个逗号,则需将"40,50,60,70" 按逗号分割40、50、60、70到结构体中。也可存于指针数组中。
本人原意是想用数组来存储最后解析的值,并将其从子程序中传出到main函数中。由于数组作用域等问题,没有实现此函数功能。若有高手在,请帮我给出解析方案,谢谢。
*/
#include <stdio.h>
#include <string.h>
struct {
char p[20];
}sp[10];
int m;
int get_arr (char *arr, int n)
{
int i,j,len=0;
int flag = 0;
for (i = 0; arr[i] != '\0'; i++)
{
if (arr[i] == ',')
{
flag++;
if (n == flag) break;
}
}
len = strlen(arr) -i +1;
char p[len];
for(j=0; arr[i];j++)
{
p[j]=arr[++i];
}
char *point=p;
i=0;
char *a;
while((a=strtok(point,",")) != NULL)
{
strcpy(sp[i++].p,a);
point=NULL;
}
m=i;
return m;
}
int main (int argc, char **argv)
{
char *arr = "10,20,30,40,50,60,70";
int i=0,len=0;
puts (arr);
len=get_arr(arr, 3);
for(i=0;i<len;i++)
printf("main %s\n",sp[i].p);
return 0;
}