我的学校希望我实现setenv()
标准c库函数的行为。我不允许setenv()
用于此实现。我怎样才能做到这一点?
问问题
1461 次
1 回答
4
在 C 编程语言的许多实现中,尤其是在 POSIX 上,可以从environ
全局变量访问环境。您可能需要手动声明它,因为它没有在任何标准头文件中声明:
extern char **environ;
environ
指向一个NULL
终止的指向variable=value
字符串的指针数组。例如,如果您的环境具有变量foo
、bar
和baz
,则其中的条目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 回答