在我的C程序中,我使用strtok()
命令來循環遍歷string
中的所有標記。在每次迭代時,它會給我一個指向每個令牌的指針。如何創建指針數組?
如何將指針存儲在數組中,使得數組與主函數中的argv
參數相同,並且可以在execvp命令中使用?
在我的C程序中,我使用strtok()
命令來循環遍歷string
中的所有標記。在每次迭代時,它會給我一個指向每個令牌的指針。如何創建指針數組?
如何將指針存儲在數組中,使得數組與主函數中的argv
參數相同,並且可以在execvp命令中使用?
你可以通過創建一個指向字符串的指針向量來做到這一點,如果你知道你會得到多少個toks。否則,你需要使用動態結構。
如果你知道的大小,像這樣將工作:
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++;
}
但一個結構類似這樣的將是我會這樣做的方式:
typedef struct _tokens{
char *token;
struct _tokens *next;
}tokens;
希望這會有所幫助。
char *array[MAX_POINTERS];
char *str;
array[0] = str;
,如果你的STR指針將失去它所指向的momory或其內容會改變,你想獲得它的一個副本,你可以使用strdup
array[0] = strdup(str);
,然後在array[0]
成爲無用的你有
free(array[0]);
註釋放它:你可以在execvp
命令中使用array
;
既然你什麼時候可以做到這一點,沒有'strcpy()'? –
@Tim數組是一個指針數組,而不是字符數組。數組[0]包含str指針的地址 – MOHAMED
請參閱* malloc *或* calloc * no它不是一些藥物名稱... –
@ ring0 - 別擔心 - OP會進入脂肪酸。聞起來很腥! –