Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C] Ritardo

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    40

    [C] Ritardo

    dovrei inserire un ritardo.
    ho inserito questa funzione :

    void Delay()
    {
    long int t;
    for(t=0;t<10000000;t++);
    }

    ma facendo così, il tempo varia da pc a pc
    esiste una funzione che permetta di specificare in millisesondi o in secondi, il tempo necessario?
    grazie

  2. #2
    http://forum.html.it/forum/showthrea...hreadid=753477
    basta usare le funzioni della libreria time.h ovvero:

    con
    codice:
    time_t time(time_t *timer);
    restituisce i secondi passati dal 1o Gennaio 1970
    ti becchi il tempo di adesso e con
    codice:
    double difftime(time_t time2, time_t time1);
    ritorna i secondi trascorsi
    ti controlli i secondi che vuoi--

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    40
    Originariamente inviato da kentaromiura
    http://forum.html.it/forum/showthrea...hreadid=753477
    basta usare le funzioni della libreria time.h ovvero:

    con
    codice:
    time_t time(time_t *timer);
    restituisce i secondi passati dal 1o Gennaio 1970
    ti becchi il tempo di adesso e con
    codice:
    double difftime(time_t time2, time_t time1);
    ritorna i secondi trascorsi
    ti controlli i secondi che vuoi--
    in altri linguaggi esiste la funzione Delay, semplicissima da usare.
    quindi non esiste in C?
    io sto usando il C da pochissimo

  4. #4
    Originariamente inviato da xxomerxx
    in altri linguaggi esiste la funzione Delay, semplicissima da usare.
    quindi non esiste in C?
    io sto usando il C da pochissimo
    certo,esistono, ma non sono portabili, invece attraverso le due funzioni che ti ho elencato puoi crearti una funzione portabile..
    ecco il delay che aspetta i secondi che vuoi tu:
    codice:
    void delay(int sec){
     time_t inizio,fine;
    
     time(&inizio);
     time(&fine);
    
     while(difftime(inizio,fine)<(double)sec)
        time(&fine);
     }
    
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    40
    Originariamente inviato da kentaromiura
    certo,esistono, ma non sono portabili, invece attraverso le due funzioni che ti ho elencato puoi crearti una funzione portabile..
    ecco il delay che aspetta i secondi che vuoi tu:
    codice:
    void delay(int sec){
     time_t inizio,fine;
    
     time(&inizio);
     time(&fine);
    
     while(difftime(inizio,fine)<(double)sec)
        time(&fine);
     }
    
    }
    quindi, usando questa funzione
    Delay(10);
    darei un attesa di 10 secondi prima di far eseguire l'istruzione successiva?

  6. #6
    Originariamente inviato da xxomerxx
    quindi, usando questa funzione
    Delay(10);
    darei un attesa di 10 secondi prima di far eseguire l'istruzione successiva?
    se non ho commesso errori..

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    40
    Originariamente inviato da kentaromiura
    se non ho commesso errori..
    rimane in attesa eterna, a prescindere dal valore inserito

    hai detto che ci sono altre funzioni che però sono limitate al sistema in uso
    ti riferisci ad un ciclo for?

  8. #8
    Originariamente inviato da xxomerxx
    rimane in attesa eterna, a prescindere dal valore inserito

    hai detto che ci sono altre funzioni che però sono limitate al sistema in uso
    ti riferisci ad un ciclo for?
    scusa, ho invertito i due parametri:
    esempio
    codice:
    void main(void){
    printf("ciao");
    delay(3);
    printf(" come ");
    delay(2);
    printf("va?");
    delay(5);
    }
    funzione corretta:

    codice:
    void delay(int sec){
     time_t inizio,fine;
    
     time(&inizio);
     time(&fine);
    
     while(difftime(fine,inizio)<(double)sec)	 
        time(&fine);
     
     }

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    40
    Originariamente inviato da kentaromiura
    scusa, ho invertito i due parametri:
    esempio
    codice:
    void main(void){
    printf("ciao");
    delay(3);
    printf(" come ");
    delay(2);
    printf("va?");
    delay(5);
    }
    funzione corretta:

    codice:
    void delay(int sec){
     time_t inizio,fine;
    
     time(&inizio);
     time(&fine);
    
     while(difftime(fine,inizio)<(double)sec)	 
        time(&fine);
     
     }
    grazie per la pazienza!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.