我有一个代码,
char* bin2hexchar( const unsigned char& ibin, char* pbcd )
{
sprintf( pbcd, "%02X", ibin );
return pbcd;
}
Run Code Online (Sandbox Code Playgroud)
问题是,ibin变量的值将变为零值.
请指教.
谢谢
pax*_*blo 11
如果您ibin在调用者中将此值更改为此值,则最可能的解释是缓冲区溢出.
我怀疑这可能是因为你传递的缓冲区作为第二个参数被定义如下:
char buff[2];
Run Code Online (Sandbox Code Playgroud)
并且ibin在堆栈上与它相邻.
该%02X格式串需要3个字节,两个用于字符和一个用于终止NUL字符.
即使这不是特定情况,它仍然几乎肯定是缓冲区溢出.如果是这样,请发布调用此函数的代码以及相关变量的定义.