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