2015-04-07 33 views
-1

我想將一個命令的指針存儲到二維數組中。下面是我正在使用的一些代碼,但我不知道如何得到想要的結果。如何將指針存儲到我的2d數組中?

#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

爲什麼你分裂線?只要'commandHistory [i ++] = strdup(line);' –

回答

0

您需要分配字符串的副本並存儲該字符串。要做到這一點最簡單的方法是這樣的:

commandHistory[i++][0] = strdup(token); 

當你的程序完成這些,你應該free正在使用strdup分配各一個。

+0

可以說commandHistory [0] [0] = ls。我有另一個令牌,這是一個字符串,我需要添加到commandHistory [0] [0]。我將如何做到這一點? –

+0

這將是[一個不同的問題](http://stackoverflow.com/questions/10279718/append-char-to-string-in-c)。 – Edward

0

您也不需要設置第二個維度。像這樣聲明。

char *commandHistory[MAX_COMMANDS]={}; 

這是一個指針數組。您可以強制從輸入源讀取字符串的MAX_LINE_LENGTH和他人的位置提到的存儲新分配的字符串,如:

commandHistory[i++]= strdup(token); 

如果你想要去的2維數組,那麼你需要令牌複製到該陣列像:

char commandHistory[MAX_COMMANDS][MAX_LINE_LENGTH + 1] ={}; 
strcpy_s(commandHistory[i++], MAX_LINE_LENGTH+1, token); 
相關問題