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

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

不会将最后三个xAB存储到SomeVariable中。所以我猜这个问题的解决方法是使用一个函数,我可以给出字符串的初始地址和它的长度,这样的函数存在吗?或者在c代码中运行一些asm来完成任务?提前谢谢。

最佳答案

简短回答:
你不能!使用其他格式。
长答案:
你不能!byte=0是空终止符:字符串的结尾。
为了解决这个问题,您可以将其编码,因此可以编写"\\x00"而不是"\x00",然后编写自己的转换例程,以便在之后将其更改为字节。
已经说过只要不希望字符串函数在空结束符之后继续执行,就可以使用任何格式!

10-04 20:23