fscanf循环不能正常工作

时间:2014-10-08 00:28:13

标签: c while-loop printf scanf feof

所以,我有以下代码:

#include <stdio.h>

int main() {
FILE* f = fopen("test.txt", "r");
FILE* p = fopen("test2.txt", "w+");
double i;
char j;

while (!feof(f)){

    fscanf(f, " %c", &j);

    if ((j == '(')||(j == ')'))
    fprintf(p, "%c ", j);
    else {
    ungetc(j,f);
    fscanf(f, "%lf ", &i);
    fprintf(p, "%.2lf ", i);
    }

}

return 0;
}

我正在阅读的文件(test.txt)是:

  

13.3 3(

和文件test2.txt是这样的:

  

13.30 3.00((

但是最后的括号不应该出现。为什么这会两次获得最后一个字符?

1 个答案:

答案 0 :(得分:1)

您不应该像这样检查feof()。相反,只需检查fscanf()的结果:

while (fscanf(f, " %c", &j) == 1) {