код сна (int) не выполняется в правильном порядке при программировании на C [закрыто]

В моей программе есть коды. Я пытаюсь запустить экран загрузки в Терминале, используя sleep (int) в цикле for ниже, но это происходит не в правильном порядке. Это мои коды:

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);
}

Start Running sleep Код готов

Помогите мне прояснить ситуацию !!

0
задан 28 October 2019 в 13:52

1 ответ

sleep() выполняется каждый раз, когда требуется, но printf() сразу не печатает символы. Это буферизует вывод, пока с новой строкой не встречаются. Вы должны fflush(3) это. Посмотрите stdio(3) страница руководства для деталей.

При выполнении экранного управления как это Вы могли бы хотеть смотреть на ncurses библиотека вместо того, чтобы вручную делать все это.

Также обратите внимание, что установка размера окна только работает в нескольких терминалах и является спорной плохой практикой. Правильно написанное приложение должно работать с любым разумным размером окна, который это получает.

1
ответ дан 22 December 2019 в 00:11

Другие вопросы по тегам:

Похожие вопросы: