如何使用fscanf忽略逗号从文件中获取输入?

时间:2015-03-10 21:59:27

标签: c input formatting scanf

所以,我用一堆文本得到了这个文件。我需要使用fscanf来逐字逐句地忽略逗号。因此this,应该被理解为this

我试过

fscanf(file,"[^,]",string);

但它会以逗号停在单词上。

我该怎么做?

我只能使用fscanf来忽略逗号,没有额外的逻辑

1 个答案:

答案 0 :(得分:3)

这是一个更坚固的版本。它接受空格和逗号的任意组合作为单词分隔符:

假设char string[100];

for (;;) {
    /* skip any spaces and an optional comma */
    fscanf(file, " ,");
    if (fscanf(file," %99[^, \t\n\f\r\v]", string) == 1) {
        /* handle string value read from file */
    }
    if (feof(file))
        break;
}

使用此格式字符串,fscanf将跳过空格和可选的逗号,读取下一个字,停在','或空格字符处理,如果成功则处理string阅读,并一直持续到file结束。

如果fscanf被读取,

1将返回string,否则它甚至不会修改string。如果流file在调用之前位于文件末尾,或者行中有多个逗号,则会发生这种情况。这些将在连续迭代中解析,直到有一个实际的单词要读。