首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怪有关问题~你遇到过没

2012-04-07 
怪问题~你遇到过没~就一句sscanf(szTmp,%02X%02X%02X%02X,&tmp[0],&tmp[1],&tmp[2],&tmp[3])后成员变量

怪问题~你遇到过没~
就一句sscanf(szTmp,"%02X%02X%02X%02X",&tmp[0],&tmp[1],&tmp[2],&tmp[3]);后
成员变量int m_val不可读了,报0xc0000005,(不是指针,就普通int也不可读)删除这句就没事~
你说怪不?

[解决办法]
在sscanf(szTmp,"%02X%02X%02X%02X",&tmp[0],&tmp[1],&tmp[2],&tmp[3]);后面加
ffush(stdin);刷新缓存区
后在读入m_val变量。
[解决办法]
sscanf不做类型检查,他只根据格式化控制符判断后面可以写入多少字节。对于%02X来说,虽然你认为读入的时一字节,实际上他当作int类型读,读入四字节,因此如果tmp不是int或者unsigned int类型数组,就存在内存访问越界

引用楼主 jjfwenwenti 的帖子:
就一句sscanf(szTmp,"%02X%02X%02X%02X",&tmp[0],&tmp[1],&tmp[2],&tmp[3]);后
成员变量int m_val不可读了,报0xc0000005,(不是指针,就普通int也不可读)删除这句就没事~
你说怪不?

热点排行