使用sprintf将更改指定的变量

时间:2010-09-14 04:11:08

标签: c++

我有一个代码,

char* bin2hexchar( const unsigned char& ibin, char* pbcd )
{
    sprintf( pbcd, "%02X", ibin );

    return pbcd;
}

问题是,ibin变量的值将变为零值。

请建议。

由于

1 个答案:

答案 0 :(得分:11)

如果您的ibin在此函数的调用者中更改为零值,则最可能的解释是缓冲区溢出。

我怀疑这可能是因为你传递的缓冲区因为第二个参数被定义了:

char buff[2];

ibin在堆栈上与它相邻。

%02X格式字符串需要三个字节,两个用于字符,一个用于终止NUL字符。

即使那个不是特定情况,它仍然几乎肯定是缓冲区溢出。如果是这样,请发布调用此函数的代码以及相关变量的定义。