2014-04-26 1 views
0

나는 다음과 같은 샘플 데이터 파일 제목했다 "data.txt로"문자를 읽는 동안 fscanf가 작동하지 않는 이유는 무엇입니까?

a<tab>b<tab>c<newline> 
a<tab>b<tab>c<newline> 

다음과 같은 코드 :

#include <iostream> 
#include <string> 
#include <cstring> 
#include <cstdio> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 
    char a,b,c; 
    FILE* fin = fopen("data.txt","r"); 

    fscanf(fin,"%c %c %c",&a,&b,&c); 
    cout<<a<<" "<<b<<" "<<c<<endl; 

    fscanf(fin,"%c %c %c",&a,&b,&c); 
    cout<<a<<" "<<b<<" "<<c<<endl; 

    fclose(fin); 

    return 0; 
} 

컴파일 및 실행, 출력은 다음과 같다 :

a b c 
    a b 

내가 볼 것으로 예상 됨 :

a b c 
a b c 

무엇이 잘못 되었나요?

답변

1

세 번째와 네 번째 문자 사이의 공백을 건너 뛰지 않습니다. 형식 문자열 중 하나에 다른 공백이 필요합니다.

(이유는 C++에서 fscanf입니까?)

+0

의미가 있으며 작동합니다! 감사! fstream은 fscanf보다 훨씬 느리지 않습니까? fscanf는 C의 기본 fscanf 구현을 감싸는 래퍼를 포함하고 있기 때문에 fscanf보다 훨씬 느립니다. – vervenumen

+0

필요는 없습니다. 간결성과 유형 안전은 때로는 더 중요합니다. –

관련 문제