String mit zeitverzögerung
-
Hallo,
ist ja möglich das das mit Sleep() nicht in ansi-c get aber in c++.
das ist nicht aus linux.MFG TaccoGo
-
TaccoGo schrieb:
ist ja möglich das das mit Sleep() nicht in ansi-c get aber in c++.
Sleep ist weder in ansi-c noch in iso-c++, sondern in der WinAPI.
-
eben! einige compiler liefern zwar funktionen zur zeitverzögerung mit, aber ist halt nicht ansi konform. vllt ist meine lösung mit den for-schleifen nicht schön, aber auf jeden fall alle mal konform!
-
also mit #include <stdio.h> unter VC++
kann man Slepp() auch in c++ nutze ohne api.
-
Ok, hast evtl recht
Trotzdem sind wir ja im ANSI-C Forum...:)
-
ja wust ich nich das das in ansi-c das nicht get.
dan halt doch mit einer schliffeMFG TaccoGo
-
Das mit der Schleife funktioniert zwar, läuft dann aber auf jedem Rechner verschieden lang. Besser ist es, in diesem Fall auf plattformspezifische Funktionen zurückzugreifen, was in diesem Fall kein großes Problem darstellt, weil es für diese Funktion auf praktisch jeder Plattform eine Variante gibt.
Die für Linux wurden ja bereits genannt.
-
Ich wollt ja auch noch plattformunabhängig bleiben, natürlich gibt es 1000 verschiedene möglichkeiten...:)
-
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> void delayed_string(const char *string, unsigned long delay) { int i; for(i=0;i<=strlen(string);i++) { usleep(delay); printf("%c",string[i]); fflush(stdout); } return; } int main(int argc, char *argv[]) { int i; if(argc<2) { printf("usage: %s <string> ...\n",argv[0]); exit(-1); } for(i=1;i<argc;i++) { delayed_string(argv[i],100000); printf("\n"); } exit(0); }
-
Es gibt keine plattformunabhängige Variante für die sleep-Funktionen. Man könnte sich höchstens was mit clock() bauen.
Sleep() ist und bleibt WinAPI und ist kein C++ Standard.
@Helmut
Deine zweite Variante mit den zwei Schleifen bringt nichts, da es bei jedem Rechner unterschiedlich schnell abgearbeitet wird.Hier die Variante mit clock():
void warte(unsigned long sekunden) { clock_t ende; for(ende = clock() + CLK_TCK * sekunden; clock() < ende; ); }
Hier kann man die verwendeten Konstanten und Funktionen nachschauen: http://www.cplusplus.com/ref/indexr.html
-
naja, wenn's wirklich genau sein soll brint meine funktion nichts, da hast du wohl recht. das hatte ich gar nicht bedacht