【发布时间】:2013-07-05 12:50:34
【问题描述】:
我想分配一个char***。 我有一个这样的句子:“这是我||需要的命令&&;拆分” 我需要在每个框中输入一个完整的句子,就像这样:
cmd[0] = "This is a command"
cmd[1] = "wich I"
cmd[2] = "need to"
cmd[3] = "split"
句子由&&, ||, ;, | 等标记分隔。
我的问题是我不知道如何分配我的三维数组。
我总是遇到分段错误。
这就是我的工作:
for(k = 0; k < 1024; k++)
for( j = 0; j < 1024; j++)
cmd[k][j] = malloc(1024);
但是几行之后,在另一个循环中:
» cmd[k][l] = array[i];
我在这里遇到了段错误。
请问我该怎么做? 提前致谢
【问题讨论】:
-
将一个字符串拆分成多个子字符串只需要一个字符串数组,不是3D结构。
-
你为什么想要 3D? char *arr[4] 将解决您的问题。要标记您的字符串,您可能需要调用strtok。
-
我只是在发布的代码中记录了一些内容,希望能够阐明它是如何出错的。对于那个分配循环,我假设 cmd 被声明为“char* cmd[1024][1024];”之类的东西,否则它就无法工作(它可能会编译,但取决于你所做的,甚至在分配期间可能不会出现段错误'ing)。当您执行“稍后几行”时,数组应该类似于“char* array[SOME_SIZE];”或“字符数组[SOME_SIZE0][SOME_SIZE1];”所以你在那里分配兼容的指针。即使那样,你也在那里泄漏内存。
标签: c arrays malloc allocation