fscanf循环工作不正常

fscanf循环工作不正常,c,while-loop,printf,scanf,feof,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);

因此,我有以下代码:

#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;
}
#包括
int main(){
文件*f=fopen(“test.txt”、“r”);
文件*p=fopen(“test2.txt”、“w+”);
双i;
查尔j;
而(!feof(f)){
fscanf(f、%c、&j);
如果((j='(')| |(j=')))
fprintf(p,“%c”,j);
否则{
ungetc(j,f);
fscanf(f、%lf、&i);
fprintf(p,.2lf%,i);
}
}
返回0;
}
我正在读取的文件(test.txt)如下所示:

13.3 3(

文件test2.txt如下所示:

13.30.3.00((


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

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


好奇:什么人建议使用
而(!feof(f)){
?谢谢你的帮助!!
while (fscanf(f, " %c", &j) == 1) {