2014-10-08 7 views
0

그래서, 나는 다음과 같은 코드를 가지고 :fscanf 루프가 제대로

13.3 세 (

:

#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)이있다

이고 test2.txt 파일은 다음과 같습니다.

13.30 3.00 (

하지만 마지막 괄호가 나타나서는 안됩니다. 왜 이것이 마지막 문자를 두 번 가져 오는 것입니까?

+0

: 무엇 참조 또는 사람이 사용하는 제안'동안 {'대신, 단순히 fscanf()의 결과를 확인 (무엇이 일어 났는지를 결정하기 위해 feof (F)!)? – chux

답변

1

이렇게하면 feof()을 확인하지 않아야합니다. 호기심

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

도움을 주셔서 감사합니다 !! –