sscanf 可选格式说明符或参数

sscanf optional format specifier or parameter

我有一个字符串,我想使用 sscanf 和其中的可选参数

来解析
char text1[] = "ATEC\rATECASA";
char text2[] = "ATEChehe\rATECASA";
char header[3];
char command[3];
char data[128];


int result = sscanf_s(text1, "%2s%2s%s\r", 
    header,
    command,
    data);

//actual output to data variable
//output text1, data = ATECASA
//output text2, data = hehe

您可以看到对于 text1,我的数据变量正在获取 ATECASA,但我想要一个空字符串或 "",我该怎么做?

我希望能够将 ATEChehe\r 的字符串解析为 3 个块

header = "AT";
command = "EC";
data = "hehe"

但我想将数据参数作为可选参数,如果在 ATEC 之后和 \r 之前没有字符串,它应该 return 一个空字符串

header = "AT";
command = "EC";
data = ""

您可以使用 %[] 语法。 您必须在 sscanf 之前至少将数据初始化为空字符串。

data[0] = 0;
int result = sscanf_s(text1, "%2s%2s%[^\r]\r", 
    header,
    command,
    data);