如何将指针存储到我的2d数组中?

时间:2015-04-07 01:00:42

标签: c arrays multidimensional-array

我想将指针存储到二维数组中。下面是我正在使用的一些代码,但我不知道如何获得所需的结果。

#define MAX_LINE_LENGTH 1024
#define MAX_COMMANDS 10
char *commandHistory[MAX_COMMANDS][MAX_LINE_LENGTH + 1];


char *token;
token = strtok(line, LSH_TOK_DELIM);
printf("%s\n", token); //prints out the command I want to store the pointer to
commandHistory[i++][0] = token; //what do I do here?

2 个答案:

答案 0 :(得分:0)

您需要分配字符串的副本并存储该字符串。最简单的方法就是这样:

commandHistory[i++][0] = strdup(token);

当您的程序完成后,您应free使用strdup分配的每个程序。

答案 1 :(得分:0)

您也无需设置第二维。声明就是这样。

char *commandHistory[MAX_COMMANDS]={};

这是一个指针数组。您可以强制执行从输入源读取的字符串的MAX_LINE_LENGTH,并且正如其他提到的那样,将新分配的字符串存储在以下位置:

commandHistory[i++]= strdup(token);

如果你想使用二维数组,那么你需要将令牌复制到数组中,如:

char commandHistory[MAX_COMMANDS][MAX_LINE_LENGTH + 1] ={};
strcpy_s(commandHistory[i++], MAX_LINE_LENGTH+1, token);