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);
我有一个字符串,我想使用 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);