我有一个密码,

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

    return pbcd;
}


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

请指教。

谢谢

最佳答案

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

我怀疑这可能是因为您定义为第二个参数的传入缓冲区是这样定义的:

char buff[2];


并且ibin在堆栈上与其相邻。

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

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

关于c++ - 使用sprintf将更改指定的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3706086/

10-10 16:56