【发布时间】:2019-04-13 10:50:47
【问题描述】:
以下示例运行良好:
char rc[20]="1,150";
char command[1];
int data1 = 0;
int data2 = 0;
int data3 = 0;
int count = sscanf(rc, "%c,%d,%d,%d", command, &data1, &data2, &data3);
它给出: 计数 = 2;命令[0] = 1;数据1 = 150
但如果命令定义为:
char command; 或 char * command。
【问题讨论】:
-
在这种情况下,
command衰减为指向其第一个元素的指针,等效于&command[0]。 -
您可以使用
char变量,而不是声明一个 1 的数组。 -
很难弄清楚您期望发生什么。您是否期望命令为“1”?如果是这样,逗号应该怎么办?你得到的结果是不是你所期望的?
-
是的,结果如我所料(sscanf 使用格式字符串中的逗号来分隔参数并忽略逗号...我也可以使用 ' ' 或任何其他非-字母字符)。我的问题(已经回答)与使用 sscanf 将第一个字符复制到命令字符有关,而不必将命令定义为 char[]。