sscanf可选格式说明符或参数

时间:2015-06-18 05:34:34

标签: c scanf

我想要使用带有可选参数的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之前,它应该返回一个空字符串

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

1 个答案:

答案 0 :(得分:-1)

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

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