-2

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

如何将指针存储在数组中,使数组就像argv主函数中的参数并且可以在 execvp 命令中使用?

4

2 回答 2

0
char *array[MAX_POINTERS];
char *str;


array[0] = str;

如果您的 str 指针将丢失它指向的内存或其内容将更改并且您想要获取它的副本,您可以使用strdup

array[0] = strdup(str);

然后当它array[0]变得无用时,你必须释放它

free(array[0]);

注意:可以arrayexecvp命令中使用;

于 2013-01-18T17:19:06.253 回答
0

如果你知道你会得到多少 tok,你可以通过创建一个指向字符串的指针向量来做到这一点。否则,您将需要使用动态结构。

如果您知道大小,则可以使用以下方法:

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;

希望这可以帮助。

于 2013-01-18T17:38:51.970 回答