sscanf从字符串格式化取数
字符串“04,13,46,”把4,13,46取出
1、定义了变量a ,b,c
sscanf(buf, "%d,%d,%d,", &a, &b, &c);
得到结果正确a=4b=13c=46
2, 定义了数组dat={0};
sscanf(buf, "%d,%d,%d,", dat, dat+1, dat+2);
结果dat=46 dat=0 dat=0
用数组的方式,为什么得到的结果不一样 怎么定义数组 dat[]的?是8 bit,16 bit 还是32bit 的 ? 本帖最后由 qwerttt 于 2023-8-22 11:21 编辑
dtcc1234 发表于 2023-8-22 11:10
怎么定义数组 dat[]的?是8 bit,16 bit 还是32bit 的 ?
(引用自2楼)
uchar dat = {0};
a b c同样也是8bit qwerttt 发表于 2023-8-22 11:12
uchar dat = {0};
(引用自3楼)
改成 int 吧,不要用uchar ,
另外 sscanf(buf, "%d,%d,%d,", dat, dat+1, dat+2); 似乎是从右到左扫描执行的。 单独定义的 uchar a,b, c ,每个数占用了 32bit 而不是8 bit, 这就是差别。 没学过c语言,自学看对了就自己试的。
不是用%bd就解决了的吗?
%d一般用在非8bit就会问题,哈哈
页:
[1]