2011-12-19 12 views
12

Eventuali duplicati:
How to measure time in milliseconds using ANSI C?
How can I get the Windows system time with millisecond resolution?Come ottenere il tempo corrente in millisecondi in C Programming

Vogliamo calcolare il tempo che un giocatore hanno preso per finire il gioco . Ma con time.h abbiamo potuto calcolare solo in secondi. ma non è esatto. È possibile ottenere il tempo in millisecondi? e qual è il%? stampare?

+2

dupilcate esatto http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c – niko

risposta

15

risposta rapida

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

int main() 
{ 
    clock_t t1, t2; 
    t1 = clock(); 
    int i; 
    for(i = 0; i < 1000000; i++) 
    { 
     int x = 90; 
    } 

    t2 = clock(); 

    float diff = ((float)(t2 - t1)/1000000.0F) * 1000; 
    printf("%f",diff); 

    return 0; 
} 
+15

Ho pensato che "clock" restituisce il tempo di CPU utilizzato, non il tempo reale . – cnicutar

+14

Questo codice, sebbene possibilmente corretto su alcuni sistemi, non funzionerà sempre. Dovresti usare CLOCKS_PER_SEC piuttosto che il codice hard 1000000. – jarmod

+1

@jarmod nice pickup - è richiesto in particolare su Windows sotto MS VC++ dove CLOCKS_PER_SEC è impostato su 1000. –

17

Non esiste un modo portatile per ottenere una risoluzione inferiore a un secondo in C standard. Il meglio che si può fare è utilizzare la funzione POSIX gettimeofday().

2

Se siete su un sistema Unix-like, utilizzare gettimeofday e convertire il risultato da microsecondi a millisecondi.

Problemi correlati