char sw_version_info[20];
.....
if (__copy_from_user(sw_version_info, (void __user*)arg, 20)) {
return -EFAULT;
}
sprintf(chip, "%s", &sw_version_info[1]);
sw_version_info[20]内容十六进制如下:
01 73 77 20 35 33 31 0a 20 20 66 70 73 65 72 76 65 72 3a 4e
chip为unsigned char chip[32],内容如下:
73 77 20 35 33 31 0a 20 20 66 70 73 65 72 76 65 72 3a 4e c0 ff ff ff 13 b0 8c dc 7f 53 88 cb 10
4e之后的内容通过%s显示为乱码。
若将sw_version_info[20]改sw_version_info[32],如下:
01 73 77 20 35 33 31 0a 20 20 66 70 73 65 72 76 65 72 3a 4e 00 00 00 00 00 fe 77 a6 c0 ff ff ff
chip 如下:
73 77 20 35 33 31 0a 20 20 66 70 73 65 72 76 65 72 3a 4e 00 00 00 00 00 00 00 00 00 00 00 00 00
那乱码的数据是哪里来? sprintf传入的参数格式问题?
sprintf数据长度
最新推荐文章于 2025-08-05 17:57:51 发布