我写了下面的代码,以便通过','打破一行,并将数据动态地放入2d指针数组中。在c中打破2d指针数组,我在做什么错了?
所以,如果该行是:
你好,世界,我的名字,是
二维指针数组将是:
你好
世界
我的名字
是
我有点新的C,所以我不知道,如果代码写得好。
当参数是我想要打破的行。
char *parameters = "A line I want to break by, Hello";
char ** inputs;
int number = 1;
inputs = (char**) malloc(sizeof(char));
const char s[2] = ",";
char *token;
token = malloc(sizeof(parameters));
strcpy(token,parameters);
token = strtok(token, s);
while(token != NULL)
{
inputs[number - 1] = malloc(sizeof(token));
strcpy(inputs[number - 1],token);
number++;
inputs = (char **) realloc(inputs, sizeof(char)*(number+1));
token = strtok(NULL, s);
}
出于某种原因,它适用于1或没有','排队,但为更多的打印一个非常奇怪的东西。
例如:
如果线路
你好,世界
输出将是:
你好?
世界
它看起来像一个记忆的问题,但我不能找到它。 也欢迎提供其他技巧和更好的解决方法。
'malloc(sizeof(char));'分配**一个字节**的内存。 –
'malloc(sizeof(token));'只分配给**指针**而不是指向它的字符串。 –
'char **'不是一个二维数组,也不是一个指针!指针不是数组!一般来说,不要把'malloc'和朋友或'void *'的结果放在一起! – Olaf