我想要使用带有可选参数的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 = ""
答案 0 :(得分:-1)
您可以使用%[]
语法。
您必须在sscanf之前将至少数据初始化为空字符串。
data[0] = 0;
int result = sscanf_s(text1, "%2s%2s%[^\r]\r",
header,
command,
data);