qwerttt 发表于 2023-8-22 10:48:35

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

用数组的方式,为什么得到的结果不一样

dtcc1234 发表于 2023-8-22 11:10:56

怎么定义数组 dat[]的?是8 bit,16 bit 还是32bit 的 ?

qwerttt 发表于 2023-8-22 11:12:59

本帖最后由 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

dtcc1234 发表于 2023-8-22 11:23:06

qwerttt 发表于 2023-8-22 11:12
uchar dat = {0};
(引用自3楼)

改成 int 吧,不要用uchar ,   
另外 sscanf(buf, "%d,%d,%d,", dat, dat+1, dat+2); 似乎是从右到左扫描执行的。

dtcc1234 发表于 2023-8-22 11:25:19

单独定义的 uchar a,b, c   ,每个数占用了 32bit 而不是8 bit, 这就是差别。

1a2b3c 发表于 2023-8-22 12:39:35

没学过c语言,自学看对了就自己试的。
不是用%bd就解决了的吗?
%d一般用在非8bit就会问题,哈哈
页: [1]
查看完整版本: sscanf从字符串格式化取数