我试图创建一个表示存储在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