Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Contare i secondi in C

  1. #1

    Contare i secondi in C

    Ciao a tutti,

    avrei bisogno di cronometrare il tempo intercorso tra 2 azioni
    (si tratta di un gioco).
    come posso fare in C? c'è qualche funzione in time.h?

    grazie mille.

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    se sei in windows potresti usare l'api QueryPerformanceFrequency, in ambiente *nix le funzioni in sys/time.h.

    Io ho testato solo in windows e funziona, ecco il codice.

    codice:
    #ifdef _WIN32 
    #include <windows.h> 
    static LARGE_INTEGER _tstart, _tend; 
    static LARGE_INTEGER freq; 
    
    void tstart(void) 
    { 
    static int first = 1; 
    
    if(first) { 
    QueryPerformanceFrequency(&freq); 
    first = 0; 
    } 
    QueryPerformanceCounter(&_tstart); 
    } 
    void tend(void) 
    { 
    QueryPerformanceCounter(&_tend); 
    } 
    
    double tval() 
    { 
    return ((double)_tend.QuadPart - 
    (double)_tstart.QuadPart)/((double)freq.QuadPart); 
    } 
    #else 
    #include <sys/time.h> 
    static struct timeval _tstart, _tend; 
    static struct timezone tz; 
    
    void tstart(void) 
    { 
    gettimeofday(&_tstart, &tz); 
    } 
    void tend(void) 
    { 
    gettimeofday(&_tend,&tz); 
    } 
    
    double tval() 
    { 
    typedef signed long s; 
    s t1, t2; 
    
    t1 = (s)_tstart.tv_sec + (s)_tstart.tv_usec/(1000*1000); 
    t2 = (s)_tend.tv_sec + (s)_tend.tv_usec/(1000*1000); 
    return t2-t1; 
    } 
    #endif
    all'inizio dell'evento chiami tstart(), alla fine tend(), e tval() restiturà il tempo trascorso.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    ti ringrazio ma io cercavo qualcosa di più semplice, tipo:

    #include <time.h>
    #include <stdio.h>

    void main()

    {
    time_t tempo1=0;
    time_t now;

    time(&now);
    printf("Oggi e\' %.24s\n",ctime(&now));
    //return 0;


    tempo1=time(NULL);
    getchar();
    printf("\a");

    printf("Il tempo che e' passato e' %.0f\n", difftime(time(NULL), tempo1));
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    127
    a me invece sei stato utilissimo

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.