아래의 단순한 코드로 작성되어 gcc 로 컴파일된 실행파일의 콘솔 출력이 비정상인 경우....
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 5; i++)
{
printf("abcd %d\r\n",i);
Sleep(1000);
}
return 0;
}
첫째 해결 방법:
아래의 수정된 코드 처럼 모든 printf.(...); 구문 뒤에 fflush(strout); 를 추가한다.
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 5; i++)
{
printf("abcd %d\r\n",i);
fflush(stdout); // 모든 printf(...); 구문 뒤에 이를 추가한다.
Sleep(1000);
}
return 0;
}
둘째 해결 방법:
아래의 수정된 코드 처럼 모든 main() 함수에서
printf(...); 구문이 시작되기 전에 setvbuf(...); 구문을 한 번만 추가한다.
#include <stdio.h>
int main(void)
{
int i;
setvbuf(stdout, (char *)NULL, _IOLBF,0 );
for (i = 0; i < 5; i++)
{
printf("abcd %d\r\n",i);
Sleep(1000);
}
return 0;
}
※ 윈도우의 MSYS2 에서 flex & bison 으로 작성된 어플의 printf() 출력이 제대로 안 될 때는
위의 두 가지 방법 모두 안 되니, 다른 방법으로 해결해여 한다.
'프로그래밍 > C' 카테고리의 다른 글
C 언어에서 큰 부동소수점수(native double) 의 정확도 (0) | 2023.03.19 |
---|---|
Lanczos 계수를 이용하여 Gamma 함수값 구하기 (0) | 2021.12.08 |
MPFR 라이브러리를 이용하여 Gamma 함수값 계산하기 (0) | 2021.01.28 |
cygwin 의 gcc 로 UTF-8 한글 처리하는 간단한 예제 (0) | 2014.04.13 |
cygwin/mingw 의 gcc 로 utf-8 한글 처리하기 (0) | 2014.04.02 |