char temp[]="FFFF "; char **end_string; int converted; converted = strtol(temp, end_string,16); //使用C标准库函数strtol将16进制字符表现的字符串转换成整形时,如果使用以上语句会将末尾的两个空格写入内存,会不可预知性的覆盖内存造成程序出现错误.解决办法是要提前预留end_string的空间如 char temp[]="FFFF "; char end_string_buff[10]; char *end_string = end_string_buff; int converted; converted = strtol(temp, &end_string,16); //或者直接不接收字符串尾部无效数据 char temp[]="FFFF "; int converted; converted = strtol(temp, NULL, 16);
记录自己掉的一个小坑