Eine Gewisse Zeit auf Eingabe warten...



  • Hi Ihr,
    also ich denke mal, dass problem wird recht einfach zu lösen sein, dennoch steh ich etwas auf dem Schlauch.
    Also wie der Titel schon sagt möchte ich ein Programm schreiben, dass eine Eingabe fordert. Jedoch nicht wartet bis jemand etwas eingegeben hat, sondern nach 10 Sekunden einfach weiter macht. Halt ähnlich wie ein Bootmanager...
    Vielen dank im vorraus



  • Die "normalen" Systemfunktionen warten notfalls bis zum Sankt-Nimmerleins-Tag auf eine Eingabe. Also mußt du auf systemspezifische Funktionen für dein Problem ausweichen, z.B.:

    int option=0;//Defaultwert
    cout<<"Bitte wählen:";//...
    
    time_t t0 = time(NULL);//Startzeit
    do
    {
      if(kbhit())//hier wird abgefragt, ob der Nutzer eine Taste gedrückt hat
      {
        cin>>option;//Eingabe auswerten
        break;
      }
    }
    while(time(NULL)-t0)<10);//Abbruch, wenn Zeit überschritten
    


  • cin und kbhit() zu kombinieren - ist das so gut? Verwenden die nicht untendrin dann beide andere Puffer?

    Aber in die Schleife gehört vor allem ein Sleep()-Aufruf am Ende. Sonst wird der Prozessor zu sehr belastet. Also:

    #include <windows.h>
    ...
    do
    {
        ...
        Sleep(10); // 10ms nichts tun, fällt dem user nicht auf, aber der prozessor kann wieder was anderes tun
    }
    while(...);
    

    MfG SideWinder



  • SideWinder schrieb:

    cin und kbhit() zu kombinieren - ist das so gut? Verwenden die nicht untendrin dann beide andere Puffer?

    Stimmt, daran hatte ich nicht gedacht (aber mir ging es auch mehr ums Grundprinzip als um solche Details). Da mußt du wohl doch per scanf() (@SideWinder: ist das genehmigt?") oder getchar() die Ersatzwerte einlesen.


Anmelden zum Antworten