直接贴代码吧
/**
* 以指定字符串分割源字符串到数组
* @param char * source 源字符串
* @param char *[] strArray 存放分割后字串的数组
* @param char * separator 用来分割的字符串
* @return int 分割后的子串数目
*/
int split(char *source, char strArray[][50], char *separator)
{
char *position;
int count = 0;
while (NULL != (position = strstr(source, separator)))
{
strncpy(strArray[count++], source, position-source); //将子串复制到数组中
source = position + 1;
}
strcpy(strArray[count++], source);
return count;
}
上面的函数有两个问题:
- 当两个分隔字符串连续出现,如:对于串"just,,for,test!",当分隔字符串为“,”时,会产生一个空串,并存入数组中,显然这不是我们需要的;
- 只有当分隔字符串为一个字符时,上面的函数执行结果才正确
/**
* 以指定字符串分割源字符串到数组
* @param char * source 源字符串
* @param char *[] strArray 存放分割后字串的数组
* @param char * separator 用来分割的字符串
* @return int 分割后的子串数目
*/
int split(char *source, char strArray[][50], char *separator)
{
char *position;
int count = 0;
while (NULL != (position = strstr(source, separator)))
{
if (position != source) //增加判断,剔除空串
{
strncpy(strArray[count++], source, position-source);
}
source = position + strlen(separator); //用separator的长度代替1
}
strcpy(strArray[count++], source);
return count;
}