我试图在C中的shell中设置一个环境变量,但是我失败了,因为包含要存储在环境变量hax\x00
s中的数据的缓冲区。所以我在寻找一个解决方案,所有这些都以使用setenv
或putenv
函数结束。问题是它们都停在它找到的第一个0中,并将其视为字符串的结尾。例如:
putenv("SomeVariable=\xAB\xAB\xAB\x00\xAB\xAB\xAB");
不会将最后三个xAB存储到
SomeVariable
中。所以我猜这个问题的解决方法是使用一个函数,我可以给出字符串的初始地址和它的长度,这样的函数存在吗?或者在c代码中运行一些asm
来完成任务?提前谢谢。 最佳答案
简短回答:
你不能!使用其他格式。
长答案:
你不能!byte=0是空终止符:字符串的结尾。
为了解决这个问题,您可以将其编码,因此可以编写"\\x00"
而不是"\x00"
,然后编写自己的转换例程,以便在之后将其更改为字节。
已经说过只要不希望字符串函数在空结束符之后继续执行,就可以使用任何格式!