2013-01-18 93 views
-2

在我的C程序中,我使用strtok()命令來循環遍歷string中的所有標記。在每次迭代時,它會給我一個指向每個令牌的指針。如何創建指針數組?

如何將指針存儲在數組中,使得數組與主函數中的argv參數相同,並且可以在execvp命令中使用?

+0

請參閱* malloc *或* calloc * no它不是一些藥物名稱... –

+0

@ ring0 - 別擔心 - OP會進入脂肪酸。聞起來很腥! –

回答

0

你可以通過創建一個指向字符串的指針向量來做到這一點,如果你知道你會得到多少個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++; 
} 

對於動態執行,你應該去閱讀一些文檔/教程(1/2/3

但一個結構類似這樣的將是我會這樣做的方式:

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

希望這會有所幫助。

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


array[0] = str; 

,如果你的STR指針將失去它所指向的momory或其內容會改變,你想獲得它的一個副本,你可以使用strdup

array[0] = strdup(str); 

,然後在array[0]成爲無用的你有

free(array[0]); 

註釋放它:你可以在execvp命令中使用array;

+0

既然你什麼時候可以做到這一點,沒有'strcpy()'? –

+0

@Tim數組是一個指針數組,而不是字符數組。數組[0]包含str指針的地址 – MOHAMED