C 프로그래밍에서 sleep(int) 코드가 올바른 순서로 실행되지 않습니다.

C 프로그래밍에서 sleep(int) 코드가 올바른 순서로 실행되지 않습니다.

내 프로그램에 일부 코드가 있습니다. 아래 for 루프에서 sleep(int)을 사용하여 터미널에서 로딩 화면을 실행하려고 하는데 올바른 순서로 실행되지 않습니다. 내 코드는 다음과 같습니다.

void LOAD()
{
    change_Terminal_Size(75 , 25);
    change_Background_To_Green();
    fill_The_Screen(75 , 25);
    int j;
    gotoxy(34,14); 
    change_Background_To_Black();
    printf(" LOADING....");
    for(j = 30 ; j <= 50; j++)
    {
        gotoxy(j,13);
        printf(" ");
        sleep(1);
    }
    gotoxy(34,14); printf(" COMPLETED  ");
    gotoxy(27,16); printf("PRESS ANY KEY TO CONTINUE");
}
void change_Terminal_Size(int width , int height)
{
    printf("\e[8;%d;%dt" , height , width);
}
void change_Background_To_Green()
{
    printf("\033[42m");
}
void fill_The_Screen(int width , int length)
{
    for(int i = 0 ; i < width ; i++)
    for(int j = 0 ; j < length ; j++)
    printf("%c" , 32);
}
void change_Background_To_Black()
{
    printf("\033[40m");
}
void gotoxy(int x, int y)
{
    printf("%c[%d;%df", 0x1B, y, x);
}

시작 달리기 수면 코드가 완료되었습니다

명확하게 도와주세요 !!

답변1

sleep()필요할 때마다 실행되지만 printf()문자를 즉시 ​​인쇄하지는 않습니다. 개행 문자가 나타날 때까지 출력을 버퍼링합니다. 그렇게 해야 합니다 fflush(3). 자세한 내용은 매뉴얼 페이지를 참조하세요 stdio(3).

ncurses이와 같이 화면 조작을 수행하는 경우 이 모든 작업을 수동으로 수행하기보다는 라이브러리를 살펴보는 것이 좋습니다 .

또한 창 크기 설정은 여러 터미널에서만 작동하며 논쟁의 여지가 있는 나쁜 습관이라는 점에 유의하십시오. 잘 작성된 앱은 적절한 창 크기에 관계없이 작동해야 합니다.

관련 정보