2

我的学校希望我实现setenv()标准库函数的行为。我不允许setenv()用于此实现。我怎样才能做到这一点?

4

1 回答 1

4

在 C 编程语言的许多实现中,尤其是在 POSIX 上,可以从environ全局变量访问环境。您可能需要手动声明它,因为它没有在任何标准头文件中声明:

extern char **environ;

environ指向一个NULL终止的指向variable=value字符串的指针数组。例如,如果您的环境具有变量foobarbaz,则其中的条目environ可能是:

environ[0] = "foo=a";
environ[1] = "bar=b";
environ[2] = "baz=c";
environ[3] = NULL;

要在不使用setenv()putenv()功能的情况下更改环境,请检查您要设置的键是否已存在。如果是,请覆盖该键的条目。否则,您需要将 的内容复制environ到新数组中并将新条目添加到其末尾。为此,您可以使用malloc()orcalloc()和。memcpy()由于这是家庭作业,我不会提供更多细节。

于 2015-12-15T22:31:33.277 回答