首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关于sscanf的有关问题

2012-03-17 
有关于sscanf的问题!C/C++ codeint _tmain(int argc, _TCHAR* argv[]){char hexstr[HEXSTR_LEN+1] 1234

有关于sscanf的问题!

C/C++ code
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,一定要这么写才行:
C/C++ code
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,谢谢

[解决办法]
听说pc-lint能提醒。没实际用过。

热点排行