我試圖創建一個表示存儲在PATH變量中的目錄的字符串數組。我正在用C編寫這段代碼,但是我無法使內存分配部分工作。令牌化一個環境變量並將結果標記保存爲char **
char* shell_path = getenv ("PATH");
char* tok = strtok (shell_path, SHELL_PATH_SEPARATOR);
int number_of_tokens = 0, i = 0;
while (tok != NULL)
{
number_of_tokens++;
}
Shell_Path_Directories = malloc (/* This is where I need some help */);
shell_path = getenv ("PATH");
tok = strtok (shell_path, SHELL_PATH_SEPARATOR);
while (tok != NULL)
{
Shell_Path_Directories[i++] = tok;
tok = strtok (NULL, SHELL_PATH_SEPARATOR);
}
我遇到的問題是,我想不出我怎麼才能知道究竟有多少內存來分配。
我知道我將字符串兩次標記爲字符串,這對我來說可能是愚蠢的,但如果有人能找到更好的方法來做到這一點,我願意改進。
這段代碼大部分是正確的。 在realloc中它應該是(i + 1)而不是簡單的i。 除了這個答案我覺得是以最好的方式回答我的問題的答案。 非常感謝。 – 2010-09-28 05:57:20
@Varun:哎呀,糾正。 – 2010-09-28 07:51:28