FSanF 循环工作不正常

fscanf loop not working properly

提问人:Rafael Dias 提问时间:10/8/2014 最后编辑:Rafael Dias 更新时间:10/8/2014 访问量:131

问:

所以,我有以下代码:

#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 ( (

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

c while-loop printf scanf feof

评论

0赞 chux - Reinstate Monica 10/8/2014
好奇:什么参考或谁建议使用?while (!feof(f)){

答:

1赞 John Zwinck 10/8/2014 #1

你不应该那样检查。相反,只需检查以下结果:feof()fscanf()

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