我想将指针存储到二维数组中。下面是我正在使用的一些代码,但我不知道如何获得所需的结果。
#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?
答案 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);