如何创建指针数组?

时间:2013-01-18 17:16:40

标签: c

在我的C程序中,我使用strtok()命令循环遍历string中的所有标记。在每次迭代时,它都会给我一个指向每个标记的指针。

如何将指针存储在数组中,使得数组与main函数中的argv参数类似,并且可以在execvp命令中使用?

2 个答案:

答案 0 :(得分:0)

char *array[MAX_POINTERS];
char *str;


array[0] = str;

如果你的str指针会丢失它指向的内容或其内容会发生变化而你想获得它的副本,你可以使用strdup

array[0] = strdup(str);

然后当array[0]变得无用时你必须用

释放它
free(array[0]);

注意:您可以在array命令中使用execvp;

答案 1 :(得分:0)

如果您知道要获得多少墨水,可以通过创建指向字符串的指针向量来实现。否则,您将需要使用动态结构。

如果您知道尺寸,可以使用以下内容:

char **mytokens = malloc(MAXSIZE*sizeof(char*)); /*Allocation of a vector of pointers to strings*/

while(there_are_tokens && counter < MAXSIZE){
 mytokens[counter] = strtok(NULL,mystring);      /*Assuming you did strtok with delims before*/
 counter++;
}

对于动态实现,您应该阅读一些文档/教程(1 / 2 / 3

但像这样的结构将是我的方式:

typedef struct _tokens{
  char *token;
  struct _tokens *next;
}tokens;

希望这有帮助。