2013-03-25 1 views
0

내가 포함 된 텍스트 파일을 읽는 아주 간단한 프로그램이 서로 다른 출력마다 시간을 제공 :엑스 코드는 (그러나 올바른 출력)

start 
costam 
stop 

이 프로그램은 다음과 같습니다

#include <iostream> 
#include <fstream> 

using namespace std; 

int main (int argc, const char * argv[]) 
{ 
printf("init\n"); 

char c = NULL; 

ifstream file; 
file.open(argv[1]); 

while (file.good()){ 
    c = file.get(); 
    printf("%c", c); 
} 

return 0; 
} 

엑스 코드 빌드가 초기화 콘솔에서 제공합니다

init 
start 
costam 
stop? 

하지만, 엑스 코드 콘솔은 나에게 제공합니다

init 

또는

init 
start 

또는

init 
start 
costam 

때로는 아무것도

. 패턴이 없습니다. 당신은 당신이하지 전에 읽어 후 file.good() 을 확인해야하기 때문에

for (;;){ 
    c = file.get(); 
    if (!file.good()) 
     break; 
    printf("%c", c); 
} 

해야 수정 버그

while (file.good()){ 
    c = file.get(); 
    printf("%c", c); 
} 

를 엑스 코드 4.2

답변

0

첫 번째와 스노우 레오파드를 사용하고 있습니다. 이것은 가짜를 제거 할 것인가? 당신은 첫 번째 출력에서 ​​볼 수 있습니다. 내가 모르는 주요 문제에 도움이 될지 여부. 아마도 그렇지 않습니다.

+0

고맙습니다. 그것은 모든 문제를 해결했습니다. 그러나 그것은 정말로 별나다. – user2207925

+0

@ user2207925 놀랍습니다. – john

0

당신은 정말 C++ I/O (ifstream)와 C I/O (printf)을 혼합해서는 안된다. 사용해보기 :

int main (int argc, const char * argv[]) 
{ 
    cout << "init" << endl; 

    char c; 

    ifstream file; 
    file.open(argv[1]); 

    while (file.good()) { 
     c = file.get(); 
     cout << c; 
    } 

    cout << endl; 

    return 0; 
}