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

#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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值