好友
阅读权限10
听众
最后登录1970-1-1
|
请教大神 想打印出二维数组strArray[1][3] 该如何修改这段代码呢? 分割前是不清楚行和列的
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[1][3]);
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[i]);
}
free(result);
return NULL;
}
result = ptmp;
result[index] = strdup(p);
//printf("%s\n\n\n", p);
printf("%s\n\n\n", result[index]);
index++;
}
//释放备份字符串
free(src_copy);
//把最后一个置为空
result[index] = strdup("");
return result;
}
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|