鱼C论坛

 找回密码
 立即注册
查看: 2414|回复: 4

c求助:本想把一个一维数组转化为二维数组,但是为什么没有输出?????????...

[复制链接]
发表于 2015-8-24 22:47:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*
有一个字符串符合以下特征(”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>

int  spitString(const char *buf1, const char c, char buf[10][30], int *mycount)
{
        int ret = 0;
        int count = 0;
        int tmpcount = 0;
        char *p = NULL;
        char *tmp = NULL;
        char buf2[1024];

        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[len - 1] != ',')
        {
                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[count], tmp, tmpcount);
                        buf[count][tmpcount] = '\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[10][30] ;

        ret = spitString(p, c, buf, &ncount);
        if (ret = 0)
        {
        for (i = 0; i < ncount; i++)
                {
                        printf("%s\n", buf[i]);
                }
        }
        else
        {
                printf("func spitString() err");
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-25 11:07:08 | 显示全部楼层
do
        {
                p = strchr(buf2, c);//这里修改 p = strchr(tmp, c)
                if (p != NULL)
                {
                        tmpcount = p - tmp;
                        memcpy(buf[count], tmp, tmpcount);
                        buf[count][tmpcount] = '\0';
                        tmp = p = p + 1;
                        count++;
                }
                else
                {
                        break;
                }
        }while (*p != '\0');
应该是一个死循环吧。因数buf2未改变。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-25 12:15:28 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-25 12:20:14 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-25 12:41:35 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表