c求助:本想把一个一维数组转化为二维数组,但是为什么没有输出?????????...
/*有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果
1) 以逗号分割字符串,形成二维数组,并把结果传出;
2) 把二维数组行数运算结果也传出。
strchr(“aa,aa”,’,’ );
请自己定义一个接口(函数)。
要求1:能正确表达功能的要求,定义出接口(函数)(30分);
要求2:正确实现接口(函数),并实现功能(40分);
要求3:编写正确的测试用例。(30分)。
*/
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
intspitString(const char *buf1, const char c, char buf, int *mycount)
{
int ret = 0;
int count = 0;
int tmpcount = 0;
char *p = NULL;
char *tmp = NULL;
char buf2;
if (buf == NULL || buf == NULL || mycount == NULL)
{
ret = -1;
printf("err is spitString() %d\n", ret);
}
int len = strlen(buf1);
if (len > 1024*10)
{
ret = -2;
printf("输入字符串过长!");
}
if (buf1 != ',')
{
strcpy(buf2, buf1);
strcat(buf2, ",");
}
else
{
strcpy(buf2, buf1);
}
p = buf2;
tmp =buf2;
do
{
p = strchr(buf2, c);
if (p != NULL)
{
tmpcount = p - tmp;
memcpy(buf, tmp, tmpcount);
buf = '\0';
tmp = p = p + 1;
count++;
}
else
{
break;
}
}while (*p != '\0');
*mycount = count;
return ret;
}
int main()
{
int ret = 0;
int i = 0;
const char *p = "dfhgebg,uefhrv,dhgurghut,ddhufguuthg,fuheig4u";
int ncount = 0;
const char c = ',';
char buf ;
ret = spitString(p, c, buf, &ncount);
if (ret = 0)
{
for (i = 0; i < ncount; i++)
{
printf("%s\n", buf);
}
}
else
{
printf("func spitString() err");
}
return 0;
} do
{
p = strchr(buf2, c);//这里修改 p = strchr(tmp, c)
if (p != NULL)
{
tmpcount = p - tmp;
memcpy(buf, tmp, tmpcount);
buf = '\0';
tmp = p = p + 1;
count++;
}
else
{
break;
}
}while (*p != '\0');
应该是一个死循环吧。因数buf2未改变。 学习学习 谢谢 谢谢
页:
[1]