>

Windows 7의 Cygwin에서 다음 간단한 코드를 실행하려고하면

#include <stdio.h>
int main() {
int i1, i2, sums;
printf( "Enter first integer\n" );
scanf( "%d", &i1 );
printf( "Enter second integer\n" );
scanf( "%d", &i2 );
sums = i1 + i2;
printf( "Sum is %d\n", sums );
return 0;
}

그것은 문제없이 (gcc를 통해) 컴파일하지만 그것을 실행하려고하면 첫 번째 문장 ( "첫 번째 정수 입력")이 터미널에 인쇄되지 않으며 두 개의 연속적인 숫자를 입력해야합니다 (예 : 3 4) 도착하기 전에

3
4
Enter first integer
Enter second integer
Sum is 7

누구든지 여기서 무슨 일이 일어나고 있는지 설명해 줄 수 있습니까? 이것은 MinGW에서 완벽하게 작동합니다.


  • 답변 # 1

    @thejh와 마찬가지로 스트림이 버퍼링 된 것 같습니다. 데이터는 아직 제어 된 시퀀스에 기록되지 않습니다.

    버퍼 설정을 조정하는 대신 fflush 를 호출 할 수 있습니다.  버퍼에서 이익을 얻기 위해 각 쓰기 후에도 원하는 동작/표시를 명시 적으로 강제합니다.

    printf( "Enter first integer\n" );
    fflush( stdout );
    scanf( "%d", &i1 );
    
    

  • 답변 # 2

    다음을 사용하여 stdout에서 버퍼링을 비활성화 할 수 있습니다

    setbuf(stdout, NULL);
    
    

  • 답변 # 3

    프로그램의 출력이 버퍼링 된 것 같습니다. 라인 버퍼링을 명시 적으로 활성화하십시오 :

    setlinebuf(stdout);
    
    

  • 이전 일부 값에 백분율 기호 (%)가 포함 된 R에서 CSV 파일을 읽는 방법
  • 다음 sql - 그룹화 된 행 연결