Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Countdown programmieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.02.2008, 14:43 Uhr
~zasdkl
Gast


hi,

ich möchte gerne einen Countdown schreiben, nun fehlt mir dazu aber jeder Ansatz wie das gehen soll. Mir würde es reichen wenn der Countdown in der shell läuft, muss jetzt kein Grafischer Countdown sein.

wie macht man sowas? ich müsste ja in der shell immer auf die selbe stelle schreibe, sprich in die selbe zeile. will ja nicht tausende cout-ausgaben haben, die mir die shell vollspamen.

wie kann ich den courser in der shell selber positiontieren, oder gibts da andere möglichkeiten für nen countdown.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.02.2008, 15:02 Uhr
Bruder Leif
dances with systems
(Operator)


Meinst Du sowas hier?


Code:
for i in `seq 10 -1 1`; do echo $i; sleep 1; done; echo "Boom"


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.02.2008, 15:04 Uhr
Bruder Leif
dances with systems
(Operator)


Aaaaaaaah jetzt. Nochmal lesen, dann wirds klar. Schau Dir mal "\r" an, oder google nach ANSI-Escape-Sequenzen...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.02.2008, 15:04 Uhr
~zasdkl
Gast


bin relativ neu in der unix welt, ich dachte dabei schon an ein C/C++ Programm.

das was du da hast ist ein shell script, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.02.2008, 19:54 Uhr
0xdeadbeef
Gott
(Operator)



bash:

for i in $(seq 10 -1 1); do printf '\r%2d' $i; sleep 1; done; printf '\r 0\n'


printf ist ein Befehl aus den GNU core utils, der die C-printf-Funktion nachahmt. In C oder C++ würdest du sowas ganz ähnlich machen. Eine sleep-Funktion gibt's im Header <unistd.h>, sie erwartet eine Anzahl von Sekunden. Außerdem gibt's noch usleep, die erwartet Mikrosekunden (u steht hier f+r µ), und nanosleep in <time.h>, die Nanosekunden erwartet, aber erwartungsgemäß eher selten genau arbeitet. Also

C++:
sleep(1); // schläft eine Sekunde
usleep(1000000); // schläft ebenfalls eine Sekunde
nanosleep(1000000000); // dito


\r ist ein spezielles Steuerzeichen, das zum Anfang der Zeile zurückspringt (carriage return). In C++ zum Beispiel wird

C++:
std::cout << "Laus\rM";


zur Ausgabe von "Maus" führen, wobei der Cursor danach auf dem a steht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.02.2008, 21:29 Uhr
~zasdkl
Gast


Ah ok.

Prinzip kapiere ich.

Nun ist meine Ausgangsituation so, dass meine Timer informationen in einem std::string vorliegen.

Wenn ich jetzt ein cout mache ohne ein "\n" bzw. std::endl; dann kommt nichts auf den Bildschirm raus. Ich vermute die Ausgabe wartet auf ein "new line" um auf den Bildschirm zu erscheinen.

Wie krieg ich das den jetzt unter einen Hut, new line will ich ja garde nicht, aber ohne seh ich gar nichts auf dem Bildschirm.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.02.2008, 21:54 Uhr
0xdeadbeef
Gott
(Operator)


Benutz std::flush anstelle von std::endl.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: