sscanf_s转换十六进制时出现内存错误
Date: 2008-11-17 14:40:04
Category: MFC | Source: input8.com
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;就行了。
Powered By Pig&Fish 1.0 CopyRight 2008, Input8's Blog