有关于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能提醒。没实际用过。