在线查询博客在线输入法火车查询IP查询手机归属地查询新华字典日历查询

sscanf_s转换十六进制时出现内存错误

Date: 2008-11-17 14:40:04
Category: MFC | Source: input8.com

Tags: sscanf_s MFC 内存 十六进制

sscanf_s和sscanf用来进行按指定的格式转换输入字符串到各个目标变量。

前段时间,使用 sscanf_s 这个函数时,刚开始没有报错,后来总是出现内存越界出错。原因就在目标变量的Size太小了。
char  c;
int i;
char  tokenstring[] = "0x5e";
sscanf_s( tokenstring, "%x", &c, sizeof(char) );

上面在执行到 sscanf_s 时不会出错,但是当变量c销毁时,会报内存错误,原因就是因为 sscanf_s 破坏了c原有的结构。 c是char型,只有一个字节。

上面如果改为
sscanf_s( tokenstring, "%x", &i, sizeof(int) ); 就不会出错了。
接收后,再执行 c = i;就行了。
Comments(0)
Username*
Email
Homepage
Content*