问题代码如下:
BYTE nYear=0, nMonth=0, nDate=0, nHour=0, nMin=0, nSec=0;
sscanf_s("2016-08-12 13:14:15", "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);
运行后,VS2010提示
Run-Time Check Failure #2 - Stack around the variable 'nSec' was corrupted.
后面检查发现原因是变量的类型为BYTE占1个字节,而scanf格式化为%d为4个字节,因此读入的时候会导致内存越界,那如何解决呢?
想了一下换成%c吧,不行,因为不是1个字符,网上查了一下使用%hhu代表unsigned char类型,但VS2010好像无效
于是只能把变量的BYTE类型改为int了,问题解决。
int nYear=0, nMonth=0, nDate=0, nHour=0, nMin=0, nSec=0;
sscanf_s("2016-08-12 13:14:15", "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);