调试过程中发现显示imei号会闪退,追踪代码,怀疑应该是sprintf的用法问题,修改后解决
static void imei_abnormal(char *data) { int nu; int nu1; int i=0,j=0; memset(imei_buff,0,16); for(i=0; i< 8 ;i++) { nu = data[i]; nu1 = nu; nu1 = nu1 & 0xf; snprintf(imei_buff+j, 16, "%x",nu1); if (i < 7) { nu = nu >> 4; snprintf(imei_buff+j+1, 16, "%x",nu); } j+=2; } } | static void imei_normal(char *data) { int nu; int nu1; int i=0,offset=0; memset(imei_buff,0,16); for(i=0;i<8;i++) { nu = data[i]; nu1 = nu; nu1 = nu1 & 0xf; offset += snprintf(imei_buff+offset, sizeof(imei_buff+offset), "%x",nu1); if (i < 7) { nu = nu >> 4; offset += snprintf(imei_buff+offset, sizeof(imei_buff+offset), "%x",nu); } } } |