有关于sscanf的问题!
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,谢谢
...全文
相关推荐
详细介绍sscanf函数的用法, 一看必然会用。。。。。。。
详细介绍sscanf函数的用法, 一看必然会用。。。。。。。
sscanf陷阱
sscanf使用的时候有一个陷阱,存入的数是32的,如果不到32位,会发生内存越界!
sscanf函数的高级用法
sscanf函数的高级用法,在C程序中我们往往用它实现对各种复杂格式字符串的处理(解析),配合sprintf
C语言中的sscanf()函数使用详解
主要介绍了C语言中的sscanf()函数使用详解,文中附加了一道相关的ACM题目进行补充巩固,需要的朋友可以参考下
sscanf ,sscanf ,sscanf
sscanf ,sscanf ,sscanf


