大佬们 小白求教 把字符串分割成二维数组疑问,
照视频打的代码 把一个字符串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: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>
jackz007 发表于 2020-3-4 13:29
编译运行实况:
大哥 请问buf = Text
这一句不是复制字符串吗 为啥不需要用strcpy 本帖最后由 jackz007 于 2020-3-4 13:59 编辑
琴长不过时光 发表于 2020-3-4 13:52
大哥 请问buf = Text
这一句不是复制字符串吗 为啥不需要用strcpy
因为 Text 就是一个字符串,用 strcpy() 只能无选择的复制整个字符串,那 ',' 的作用如何落实,字符串还怎么分割?
buf = Text 只是复制字符串Text 中的一个字符。 jackz007 发表于 2020-3-4 13:57
因为 Text 就是一个字符串,用 strcpy() 只能无选择的复制整个字符串,那 ',' 的作用如何落实,字 ...
谢谢了 大哥 jackz007 发表于 2020-3-4 13:57
因为 Text 就是一个字符串,用 strcpy() 只能无选择的复制整个字符串,那 ',' 的作用如何落实,字 ...
大哥 上面那个用指针的p-pTmp 做下标的错哪了 能修改吗 我看的视频是连续的 要是这个搞不懂没法往后面学
页:
[1]