在C中使用%[…]使用fscanf解析字符串

在C中使用%[…]使用fscanf解析字符串,c,parsing,scanf,C,Parsing,Scanf,我正在使用fscanf函数扫描由逗号分隔的大字符串,大字符串中的最后一个子字符串用星号(*)分隔。以下是一个例子: substring1,substring2,substring3*substring4 上面的代码位于一个简单的for循环中,可以扫描多次。如你所见,我正在扫描,直到出现星号或逗号。不过,恐怕我没有把星号正确地包括在集合中。有人能纠正我的错误吗 谢谢。在%[模式中唯一特殊的字符是^、-和] 如果要读取的下一个字符是'、'或'*',则此模式将失败。因此,如果您有两个连续的逗号或星号,

我正在使用
fscanf
函数扫描由逗号分隔的大字符串,大字符串中的最后一个子字符串用星号(*)分隔。以下是一个例子:

substring1,substring2,substring3*substring4 上面的代码位于一个简单的for循环中,可以扫描多次。如你所见,我正在扫描,直到出现星号或逗号。不过,恐怕我没有把星号正确地包括在集合中。有人能纠正我的错误吗


谢谢。

%[
模式中唯一特殊的字符是
^
-
]

如果要读取的下一个字符是
'、'
'*'
,则此模式将失败。因此,如果您有两个连续的逗号或星号,那么您的循环将阻塞并停止读取

fscanf(fs, "%[^*,]%*c", str);