2014-10-08 45 views
0

所以,我有以下代码:的fscanf循环不正常

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

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

+0

好奇:建议使用什么参考或谁'而{'(FEOF(F)!)? – chux 2014-10-08 00:38:51

回答

1

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

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

感谢您的帮助! – 2014-10-08 00:49:10