El código sleep(int) no se ejecuta en el orden correcto en la programación C

El código sleep(int) no se ejecuta en el orden correcto en la programación C

Tengo algunos códigos en mi programa. Estoy intentando ejecutar la pantalla de carga en la Terminal usando sleep(int) en un bucle for a continuación, pero no lo hace en el orden correcto. Estos son mis códigos:

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

Comenzar Dormir corriendo El código está hecho

Ayúdame a ser claro!!

Respuesta1

sleep()se ejecuta cuando es necesario, pero printf()no imprime los caracteres inmediatamente. Almacena en búfer la salida hasta que se encuentra una nueva línea. Deberías fflush(3)hacerlo. Consulte la stdio(3)página del manual para obtener más detalles.

Si está manipulando la pantalla de esta manera, es posible que desee echar un vistazo a la ncursesbiblioteca en lugar de hacer todo esto manualmente.

También tenga en cuenta que configurar el tamaño de la ventana sólo funciona en varios terminales y es una mala práctica discutible. Una aplicación bien escrita debería funcionar con cualquier tamaño de ventana razonable que tenga.

información relacionada