홈>
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
- 답변 # 2
다음을 사용하여 stdout에서 버퍼링을 비활성화 할 수 있습니다
setbuf(stdout, NULL);
- 답변 # 3
프로그램의 출력이 버퍼링 된 것 같습니다. 라인 버퍼링을 명시 적으로 활성화하십시오 :
setlinebuf(stdout);
관련 자료
- c++ - vector 에서 값을 인쇄 할 때 printf를 사용하는 방법?
- asp.net core - ASP 31 RazorPages AJAX Post Updates 모델 후 Razor가 화면에 값을 인쇄하지 않음
- c - printf 지정자"% s"가 여러 변수를 한 번에 인쇄하는 이유는 무엇입니까?
- linux - printf 내장으로 현재 시간을 밀리 초 또는 나노초로 인쇄
- html - php printf가 올바른 순서로 인쇄되지 않습니다
- c - 왜 입력 문자열로 화면에 코드 인쇄 가비지 값이 있습니까?
- 반환 된 문자열 포인터로 Printf가 올바르게 인쇄되지 않습니다
- C - 씨 - 중첩 된 printf 문에서 % c를 사용하여 널 문자 인쇄
@thejh와 마찬가지로 스트림이 버퍼링 된 것 같습니다. 데이터는 아직 제어 된 시퀀스에 기록되지 않습니다.
버퍼 설정을 조정하는 대신
fflush
를 호출 할 수 있습니다. 버퍼에서 이익을 얻기 위해 각 쓰기 후에도 원하는 동작/표시를 명시 적으로 강제합니다.