琴长不过时光 发表于 2020-3-4 13:13:39

大佬们 小白求教 把字符串分割成二维数组疑问,

照视频打的代码 把一个字符串char* p = "abcdef,acccd,eeee,aaaa,e3eeeee,sssss,"; 然后以逗号‘,’为分隔
组成一个个二维数组比如abcdef是二维数组第一个元素,acccd是二维数组第二个元素
这个应该怎么写?我照视频打的p2 = '\0'; 报错 说是指针类型

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int getMen(char* from, char c, char myBuf, int* ncount)
{
        if (from == NULL || ncount == NULL)
        {
                return -1;
        }
        char* myfrom = from;
        int count = 0;
        char* p1 = myfrom;
        char* p2 = myfrom;
       
        while (*myfrom)
        {
                p1 = strchar(p1, c);
                if (p1 != NULL)
                {
                        if (p1 - p2 > 0)
                        {
                                strncpy(p2, p1, p1 - p2);
                                p2 = '\0';//这里p1 - p2 报错
                                count++;
                                p1 = p2 = p1 + 1;
                        }
                }
                else
                {
                        break;
                }
        }
        *ncount = count;
        return 0;
}

int main()
{
        int ret = 0;
        char* p = "abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";
        char c = ',';
        int count = 0;
        char buf2;
        ret = getMen(p, c, buf2, &count);
        if (ret != 0)
        {
                printf("fun:getMen() from == NULL || ncount == NULL err:%d\n", ret);
                return ret;
        }
        system("pause");
        return 0;
}


jackz007 发表于 2020-3-4 13:29:45

本帖最后由 jackz007 于 2020-3-4 13:41 编辑

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "stdlib.h"

int main()
{
      int count , e , k                                                   ;
      char Text[] = {"abcdef,acccd,eeee,aaaa,e3eeeee,sssss,"} , buf ;
      for(k = 0 , count = 0 , e = 0 ; Text ; k ++) {
                if(Text != ',') {
                        buf = Text                            ;
                        buf = '\0'                                  ;
                } else {
                        count ++                                              ;
                        e = 0                                                 ;
                }
      }
      if(e) count ++                                                      ;
      for(k = 0 ; k < count ; k ++) printf("%s\n" , buf)               ;
      system("pause")                                                       ;
}
      编译运行实况:
C:\Bin>g++ -o x x.c

C:\Bin>x
abcdef
acccd
eeee
aaaa
e3eeeee
sssss
请按任意键继续. . .

C:\Bin>

琴长不过时光 发表于 2020-3-4 13:52:16

jackz007 发表于 2020-3-4 13:29
编译运行实况:

大哥 请问buf = Text
这一句不是复制字符串吗 为啥不需要用strcpy

jackz007 发表于 2020-3-4 13:57:49

本帖最后由 jackz007 于 2020-3-4 13:59 编辑

琴长不过时光 发表于 2020-3-4 13:52
大哥 请问buf = Text
这一句不是复制字符串吗 为啥不需要用strcpy

    因为 Text 就是一个字符串,用 strcpy() 只能无选择的复制整个字符串,那 ',' 的作用如何落实,字符串还怎么分割?
    buf = Text 只是复制字符串Text 中的一个字符。

琴长不过时光 发表于 2020-3-4 14:15:20

jackz007 发表于 2020-3-4 13:57
因为 Text 就是一个字符串,用 strcpy() 只能无选择的复制整个字符串,那 ',' 的作用如何落实,字 ...

谢谢了 大哥

琴长不过时光 发表于 2020-3-4 20:56:26

jackz007 发表于 2020-3-4 13:57
因为 Text 就是一个字符串,用 strcpy() 只能无选择的复制整个字符串,那 ',' 的作用如何落实,字 ...

大哥 上面那个用指针的p-pTmp 做下标的错哪了 能修改吗 我看的视频是连续的 要是这个搞不懂没法往后面学
页: [1]
查看完整版本: 大佬们 小白求教 把字符串分割成二维数组疑问,