您的位置:首页 > 编程语言 > C语言/C++

C语言通过两个指针挖取字符串,并存入到二级指针中

2016-12-03 15:54 232 查看
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
/*
有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果
1)以逗号分割字符串,形成二维数组,并把结果传出;
2)把二维数组行数运算结果也传出。
strchr(“aa,aa”,’,’ );
请自己定义一个接口(函数)。
要求1:能正确表达功能的要求,定义出接口(函数)(30分);
要求2:正确实现接口(函数),并实现功能(40分);
要求3:编写正确的测试用例。(30分)。
*/
int split_str(char *input, char out[10][30],char c,int *length)
{
int ret = 0;
char *in = input;
int i = 0;
//拷贝memcpy()中第三个参数的差值
int tmp = 0;
//空参数异常处理
if (!input || !out || !length)
{
ret = -1;
//log
printf("func split_str(char *input, char output[10][30],int *length) err:%d\n", ret);
return ret;
}
//定义两个指针指向input的首地址
char *front = in;
char *rear = in;
//char* in:abcdef,acccd,eeee,aaaa,e3eeeee,sssss,

do
{
rear = strchr(rear, c);
if (rear)
{
tmp = rear - front;
memcpy(out[i], front, tmp);
//++
i++;
//前指针后移一个字符串的长度
front = rear + 1;

//跳过char c,读取下一个字符
rear++;
}
else
{
break;
}

} while (*rear!='\0');
*length = i;
return ret;
}
int main()
{
int vt = 0;
char str[1024] = "abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";
char receive[10][30] = { 0 };
char c = ',';
int len = 0;
vt = split_str(str,receive,c,&len);
int i;
for (i = 0; i < len; i++)
{
printf("%s\n", receive[i]);
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: