请教大神 该如何修改这段代码成为二维数组?
请教大神 想打印出二维数组strArray 该如何修改这段代码呢?分割前是不清楚行和列的void main()
{
char *Result = "系统日期 名称 数量 库存 句柄 保留信息 #20170517 发展 500 500 550030014923 1FFA1208#20170517 发展2 100 100 54923 1ff1F208";
char **split(const char *src, const char *delim);
char **strArray = split(Result, "# ");
printf("%s",strArray);
getchar();
}
//分割字符并返回字符数组
char **split(const char *src, const char *delim)
{
int size_char_p = sizeof(char*);
char **result = (char**)malloc(size_char_p);
char **ptmp = NULL;
char *src_copy;
int index = 0;
int result_size = 1;
int i = 0;
char *p;
if (src == NULL || delim == NULL)
{
*result = strdup("");
return result;
}
//备份源字符串
src_copy = strdup(src);
//开始分隔第一个字符串
p = strtok(src_copy, delim);
printf("%s\n\n\n结束p\n", p);
if (p == NULL || strlen(p) == 0)
{
//释放备份
free(src_copy);
*result = strdup("");
return result;
}
//重新申请字符串指针空间
ptmp = (char**)realloc(result, (++result_size)*size_char_p);
if (ptmp == NULL) {
printf("cannot realloc\n");
free(result);
return NULL;
}
result = ptmp;
*result = strdup(p);
index++;
//printf("%S\n", result);
//重新申请字符串指针的空间
while ((p = strtok(NULL, delim)))
{
if (*p == '\0') {
continue;
}
//重新申请字符串指针
ptmp = (char**)realloc(result, (++result_size)*size_char_p);
if (ptmp == NULL) {
printf("cannot realloc\n");
//无法申请内存,则释放申请的空间
for (i = 0; i<result_size; i++) {
free(result);
}
free(result);
return NULL;
}
result = ptmp;
result = strdup(p);
//printf("%s\n\n\n", p);
printf("%s\n\n\n", result);
index++;
}
//释放备份字符串
free(src_copy);
//把最后一个置为空
result = strdup("");
return result;
}
第一:并没有看懂你的目的?
第二:你的char **split(const char *src, const char *delim)函数声明不应该放在main主函数中
第三:如果只是想要打印处来指针处的数据可以直接printf("%s",strArray);不需要按照数组的方式。前提是你的指针所指内存没有溢出。
个人观点仅供参考。
页:
[1]