Ich habe einige Codes in meinem Programm. Ich versuche, den Ladebildschirm im Terminal auszuführen, indem ich sleep(int) in einer For-Schleife unten verwende, aber es funktioniert nicht in der richtigen Reihenfolge. Dies sind meine Codes:
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 Laufender Schlaf Der Code ist fertig
Helfen Sie mir, das klar auszudrücken!!
Antwort1
sleep()
wird bei Bedarf ausgeführt, printf()
druckt die Zeichen aber nicht sofort. Es puffert die Ausgabe, bis eine neue Zeile gefunden wird. Das sollten Sie tun fflush(3)
. Weitere Informationen finden Sie auf der stdio(3)
Manualpage.
Wenn Sie Bildschirmmanipulationen dieser Art durchführen, sollten Sie einen Blick in die ncurses
Bibliothek werfen, anstatt dies alles manuell durchzuführen.
Beachten Sie auch, dass das Einstellen der Fenstergröße nur in einigen Terminals funktioniert und wohl eine schlechte Praxis ist. Eine gut geschriebene App sollte mit jeder vernünftigen Fenstergröße funktionieren, die sie bekommt.