以下示例可以正常工作:
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; data1 = 150
但是如果命令定义为:我不知道如何使这项工作:
char command;
或char * command
。
答案 0 :(得分:0)
如果有
char command;
然后您可以使用地址运算符&
:
sscanf(..., &command, ...);
如果有
char *command;
然后您首先需要将指针指向有效的某个地方:
command = malloc(1);
或
char actual_command;
command = &actual_command;
然后像在问题中一样使用command
。
所有这些都应该放在课本中或在课堂上讲授。如果没有,请改书或上课(或者,如果错过的话,在课上多加注意)。
答案 1 :(得分:0)
如果命令定义为:char,我不知道如何使它工作 命令;或char *命令。
您始终需要确保传递了sscanf
要在其中存储值的字符地址。(最初,您传递的是command
,即char
的数组名称,它等于数组中第一个成员的地址(唯一的成员,因为“ you”声明的数组大小为1)。
在第一种情况下,您的代码几乎是正确的。
char command;
int count = sscanf(rc, "%c,%d,%d,%d", &command, &data1, &data2, &data3);
第二种情况比较棘手。传递字符的地址很容易,因为command
正是该类型。但是指针指向的是什么?您需要初始化其值,使其指向可以写入的char
。
char comm_value = '?';
char* command = &comm_value;
int count = sscanf(rc, "%c,%d,%d,%d", command, &data1, &data2, &data3);