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

时间:2012-08-16 03:33:41

标签: c parsing scanf

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

substring1,substring2,substring3*substring4

我能够解析逗号分隔的子字符串没有问题,但是当它到达星号时,它会阻止程序,因为fscanf正在阻塞。我在%[^...]中使用fscanf格式说明符,如下所示:

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

上面的代码是一个简单的for循环,可以多次扫描。如您所见,我正在扫描,直到出现星号或逗号。但是,我担心我没有正确地将星号包括在内。有人可以纠正我的错误吗?

感谢。

1 个答案:

答案 0 :(得分:0)

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

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