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

sscanf_s 数据转换 corrupt解决思路

2012-01-13 
sscanf_s 数据转换 corruptvoid CIniOperationDlg::OnBnClickedButScanf(){char buffer[]15 13 14...W

sscanf_s 数据转换 corrupt
void CIniOperationDlg::OnBnClickedButScanf()
{

char buffer[]="15 13 14...";

WORD wIDdog;
int i;
//取头两个字节
sscanf_s(buffer,"%2x",&wIDdog);

TRACE("\n wIDDog:%2x",wIDdog);
// sscanf_s(buffer,"%d",&i);

// TRACE("\n i:%4x;",i) ;
}

该该函数执行完后提示
Run-Time Check Failure #2 - Stack around the variable 'wIDdog' was corrupted.

经检查WORD 是两个字节。但WORD 改为 DWORD 后执行没有异常。请问这是为什么???

[解决办法]
sscanf_s(buffer,"%2x",&wIDdog); 里面的"%2x" 对应的是无符号整型数,vc.net默认的是32位,无符号整型数占4个字节,WORD只有两个字节,所以出现了你说的现象。
建议最好用UINT类型,这样可以自动适应编译器的位数。

热点排行