关于C#:fscanf循环无法正常工作

fscanf loop not working properly

所以,我有以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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 ( (

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


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

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