Warten in einer for-Schleife
-
Hi,
hier mal ein kurzes programm:
#define CLS printf("\033[2J") #define LCT(x, y) printf("\033[%d;%dH", y, x) #define X printf("x"); //... for(i = 0; i<10; i++){ CLS; LCT(56, i); X; system("sleep 1"); } //...
Ich möchte das x 10-mal nach unten "springen" lassen, es soll in der Konsole erscheinen, anschließend soll 1 sec gewartet werden und dann soll das x eine zeile tiefer erscheinen. Mein Problem ist, dass das x 10 sec nach starten des Programms einfach 10 Zeilen tiefer erscheint, es springt also nicht. Wie kann ich das springen realisieren?
Bitte um Hilfe.
Danke
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
schonmal mit fflush(stdout); probiert?
-
#include <windows.h> void ClearScreen(void) { CONSOLE_SCREEN_BUFFER_INFO csbi; COORD target = {0, 0}; DWORD written; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ', csbi.dwSize.X * csbi.dwSize.Y, target, &written); FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7, csbi.dwSize.X * csbi.dwSize.Y, target, &written); } void SetCursorPosition(int x, int y) { COORD pos = {x, y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } void DruckSimpleText(int x, int y, char const *text) { COORD target = {x, y}; DWORD written; WriteConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), text, strlen(text), target, &written); } void DruckSimpleChar(int x, int y, char c) { char text[2] = {c, 0}; DruckSimpleText(x, y, text); } int main() { int y; ClearScreen(); SetCursorPosition(0, 0); for(y = 3; y < 13; ) { DruckSimpleChar(5, y, ' '); ++y; DruckSimpleChar(5, y, 'X'); Sleep(1000); } }