我尝试使用sscanf解析ascii字符串。字符串如下所示:
"参数1""参数2"""" Param4"
问题是可能存在Param3,但不能保证。我对Param3也不感兴趣,但如果它存在,必须为它做好准备。
我按以下方式解析参数:
char ParamStr[] = "\"Param1\",\"Param2\",\"\",\"Param4\"";
char Param1[10];
char Param2[10];
char Param4[10];
sscanf(ParamStr, "\"%[^\"]\", \"%[^\"]\", \"%*[^\"]\", \"%[^\"]\"", Param1, Param2, Param4);
但是当我解析Param3时,我得到的Param4结果不正确。
处理像Param3这样的参数的正确方法是什么?"动态"?
答案 0 :(得分:4)
您可以使用scanf
的返回值并使用2种不同的格式字符串:
// Try to scan all 4....
int count = sscanf(ParamStr, "\"%[^\"]\",\"%[^\"]\",\"%[^\"]\",\"%[^\"]\"",
Param1, Param2, Param3, Param4);
// Didn't get 4? Try for 3 using a different format string
if (4 != count) {
count = sscanf(ParamStr, "\"%[^\"]\",\"%[^\"]\",\"\",\"%[^\"]\"",
Param1, Param2, Param4);
}