pastebin

Paste #79051: 字符串分割函数

char**	string_split(char *url,char sp,int *ret)	//分割字符串,返回二维字符串表
{
	int	i=0,j=0,sum_of_sp=0,i_max=strlen(url);			//i,j用于循环基数,sum_of_sp记录 '&' 的个数,i_max字符串的长度
	int	*index_list=NULL;
	char	**res=NULL;
	for(i=0;i<i_max;i++){if(url[i]==sp)sum_of_sp++;}		//计算'&' 个数有4个&则sum_of_sp=4

	index_list=(int*)malloc(sizeof(int)*(sum_of_sp+1));			//储存分割偏移量表index_list 比sum_of_sp多1,用于储存结束位置

	for(i=0,j=0;i<=i_max;i++)						//遍历url,记录偏移量到index_list
	{
		if(url[i]==sp || url[i]=='\0')
		{
			index_list[j]=i;
			j++;
		}
	}									

	res=(char**)malloc(sizeof(char*)*(sum_of_sp+2));			//生成储存字段的二维表头

	res[0]=(char*)malloc(sizeof(char)*(index_list[0]+1));
	printf("%d\n",index_list[0]);
	strncpy(res[0],url,index_list[0]);
	printf("%s",res[index_list[0]]);
	res[index_list[0]]='\0';
	//printf("%s \n",res[0]);

	for(i=1;i<=sum_of_sp;i++)
	{
		printf("hi\n");
		res[i]=NULL;
		printf("%d\n",index_list[i]-index_list[i-1]);
		res[i]=(char*)malloc(sizeof(char)*(index_list[i]-index_list[i-1]));
		strncpy(res[i],url+index_list[i-1]+1,index_list[i]-index_list[i-1]-1);			//复制字符
		//printf("%s \n",res[i]);
		
	}
	*ret=sum_of_sp+1;
	free(index_list);							//释放偏移量表
	return	res;		
}

Private
Wrap long lines

3 + 1 =