我正在使用fscanf
函数扫描一个由逗号分隔的大字符串,较大字符串中的最后一个子字符串用星号(*)分隔。这是一个例子:
substring1,substring2,substring3*substring4
我能够解析逗号分隔的子字符串没有问题,但是当它到达星号时,它会阻止程序,因为fscanf
正在阻塞。我在%[^...]
中使用fscanf
格式说明符,如下所示:
fscanf(fs, "%[^*,]%*c", str);
上面的代码是一个简单的for循环,可以多次扫描。如您所见,我正在扫描,直到出现星号或逗号。但是,我担心我没有正确地将星号包括在内。有人可以纠正我的错误吗?
感谢。
答案 0 :(得分:0)
%[
模式中唯一特殊的字符是^
,-
和]
。
如果要读取的下一个字符是','
或'*'
,则此模式将失败。因此,如果您有两个连续的逗号或星号,那么您的循环将会卡住并停止阅读。