c - 在 C 中用零设置环境变量

标签 c environment-variables

我试图在 C 的 shell 中设置一个环境变量,但我遇到了失败,因为包含要存储在环境变量 hax \x00s 中的数据的缓冲区它。所以我一直在寻找一个解决方案,所有这些都以使用 setenvputenv 函数告终。问题是它们都停在第一个零,它认为它是字符串的结尾。例如:

putenv("SomeVariable=\xAB\xAB\xAB\x00\xAB\xAB\xAB");

不会将最后三个\xAB 存储到 SomeVariable 中。所以我想解决这个问题的方法是使用一个函数,我可以在其中给出字符串的初始地址及其长度,这样的函数存在吗?或者也许沿着 c 代码运行一些 asm 来完成这项工作?提前致谢。

最佳答案

简答:
你不能!使用不同的格式。

长答案:
你不能! byte = 0 是空终止符:字符串的结尾。 要绕过它,您可以将其编码,所以写 "\\x00" 而不是 "\x00" 然后编写您自己的转换例程以将它们更改为字节.

话虽如此,您可以使用任何您想要的格式,只要您不希望字符串函数在空终止符之后继续执行即可!

关于c - 在 C 中用零设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42458716/

相关文章:

c - 如何将两个数组一起排序,其中第一个数组使用冒泡排序进行排序?

java - catalina.bat 可以更改环境变量吗?

python - 在Python中导入创建环境变量?

environment-variables - 如何在 Kotlin 中读取环境变量?

c - 如何初始化一个只有 NULL 指针的字符串数组?

c - 转到特定元素 C

c++ - 如何增加字符指针?

testing - cypress:使用 npm run cy:open 从命令行传递环境变量

bash - 将 ENV 传递给运行单个命令的 Docker 容器

c - g_slice_new 不接受我的结构类型