有关于sscanf的问题!

winmenaruto winmenaruto 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
int _tmain(int argc, _TCHAR* argv[])
{
char hexstr[HEXSTR_LEN+1] = "1234567890ABCDEF";
unsigned char hex[HEXSTR_LEN/2] = {0x00};
unsigned char tmp = 0;
int i = 0;

printf("sscanf test module init...\n");

printf("hex str: %s\n", hexstr);
printf("hex val: ");
for(i = 0; i < strlen(hexstr)/2; i++)
{
sscanf(hexstr + 2 * i, "%2x", &tmp);
hex[i] = tmp;
printf("%.2x ", hex[i]);
tmp = 0;
}
}

作用是,将1234字符串转成0x12,0x34,这么写,报错,说什么tmp corrupted,一定要这么写才行:
int _tmain(int argc, _TCHAR* argv[])
{
char hexstr[HEXSTR_LEN+1] = "1234567890ABCDEF";
unsigned char hex[HEXSTR_LEN/2] = {0x00};
int tmp = 0;
int i = 0;

printf("sscanf test module init...\n");

printf("hex str: %s\n", hexstr);
printf("hex val: ");
for(i = 0; i < strlen(hexstr)/2; i++)
{
sscanf(hexstr + 2 * i, "%2x", &tmp);
hex[i] = (unsigned char)tmp;
printf("%.2x ", hex[i]);
tmp = 0;
}
}


why ?在我看来,0x12一个字节足够保存了,为什么非得int然后强制unsigned char,谢谢
...全文
评论 7
收藏 已收藏
分享
返回顶部
winmenaruto
C++ 语言 65,214 成员 250,514 内容