Timeout zum exit aus einer Endlosschleife, aber wie?



  • Hallo,

    habe eine Endlosschleife, bei der es sein kann dass die Abbruchbedinung nicht auftritt.

    Wie kann ich unter C einen Timeout einsetzten.
    Es gibt doch die sleep-Funktion, dann muss es doch auch eine timer-funktion geben oder?

    Also irgendwie, falls 100ms vorbei und immer noch keine abbruchbed. dann exit(1) oder so.



  • hya ! 🕶

    #include <time.h>
    
    int main()// agga uggas cookie wargame V 0.1 Beta ( all rihghts reserved  )
    {
    	clock_t boom = 1000, start=	0, stop = 0;
    
    	printf("Nach Betaetigung der Entertaste, haben Sie 1000ms Zeit diese\n"
    		"noch einmal zu druecken. Wenn Sie schnell genug sind gibt es einen"
    		"Keks. :-D\n"
    		"Wenn nicht, wird Ihr PC leider exploden. :-(\n" );
    	getchar();
    	start = clock();
    	while( !_kbhit() && boom-(stop - start) >= 0 )
    	{
    		printf("%lf\r", (double) boom-(stop - start) );
    		stop = clock();
    	}
    	if(_kbhit())
    	{
    		if( _getche() == 13 ) stop = 0;
    	}
       	if ( stop )
    		puts("\nBOOOM");
    	else
    		puts("Ok. Sie waren schnell genug. Sie koennen jetzt zum Baecker gehen."); 
    	return 0;
    }
    

    🙂



  • na, ob das so richtig ist?^^
    ich kann da nämlich nirgends 'CLOCKS_PER_SEC' erblicken.
    🙂



  • clocking-freak schrieb:

    na, ob das so richtig ist?^^
    ich kann da nämlich nirgends 'CLOCKS_PER_SEC' erblicken.
    🙂

    ich denke ja. um auf sekunden zu kommen, teilt man ja durch CLOCKS_PER_SEC.
    lässt man die konstante weg, dann bekommt man millisekunden.

    und mehr als 1000 ms zeit für nen keks gibts bei dem spiel nicht.
    🙂



  • agga ugga schrieb:

    ich denke ja. um auf sekunden zu kommen, teilt man ja durch CLOCKS_PER_SEC.
    lässt man die konstante weg, dann bekommt man millisekunden.

    nur wenn CLOCKS_PER_SEC 1000 ist. auf 'nem system mit CLOCKS_PER_SEC==50 hast plötzlich anderes verhalten.
    🙂



  • counter-freak schrieb:

    nur wenn CLOCKS_PER_SEC 1000 ist. auf 'nem system mit CLOCKS_PER_SEC==50 hast plötzlich anderes verhalten.
    🙂

    ja, steht bei mir in der time.h mit 1000 drin.
    aber gut zu wissen, das es auch anders sein kann.

    dann schreibe ich besser bei dem nächsten beta release (start-stop)/CLOCKS_PER_SEC*1000


Anmelden zum Antworten