2014-10-08 69 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