溯月0503 发表于 2015-8-24 22:47:34

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

yjip267 发表于 2015-8-25 11:07:08

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未改变。

dabaojian 发表于 2015-8-25 12:15:28

学习学习

溯月0503 发表于 2015-8-25 12:20:14

谢谢

dabaojian 发表于 2015-8-25 12:41:35

谢谢
页: [1]
查看完整版本: c求助:本想把一个一维数组转化为二维数组,但是为什么没有输出?????????...