sscanf编写不正确

时间:2014-01-20 09:45:11

标签: c scanf

我正在学习C,有些东西我无法弄清楚sscanf。打印到缓冲区时,没有写入任何数据,它们始终以-1失败。如果你看到第二个printf语句,我可以清楚地在屏幕上查看我的数据,所以我知道它是正确的,但出于某种原因作为指针,没有任何东西存在。

以下是我的代码片段。

char *v = (char*)&int_value;
int i;
for(i=0;i<sizeof(unsigned int);i++)
{
    printf("sscanf success: %d ", sscanf(&v[i], "%02x", &buffer[pos+i]));
    printf("%02x\n", v[i]);
}

谢谢,我现在正在逐字节地进行buffer[pos+i] = v[i];

1 个答案:

答案 0 :(得分:0)

您假设int值以某种方式通过类型转换转换为ascii,但不是这样sscanf将失败。 sscanf需要一个有效的C字符串来操作,例如char* p = "02";但是当你输入强制转换数字时,你得到数字的实际字节表示 - 例如,在中间可以有一个0来终止字符串。

E.g。如果你的int值是8,它在内存中会看起来像这样:00 00 10 00(或十六进制00h 08h - 它的外观取决于你的架构)。