Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C] mettere in pausa il programma

    ciao!
    io voglio realizzare una sveglia ke non si mangi tutta la mia ram, quindi ho bisogno che il prgramma stoppi la sua esecuzione per qualche secondo, come se fosse il dealy() di pascal...su internet ho trovato la funzione usleep(), ma su win32 va bene? in quale libreria è dichiarata?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La sveglia ti mangia la ram? Semmai la CPU ...

    Usa la Sleep di Kernel32.dll

  3. #3
    non so usare le dll scusa, è vero non mangia la ram, è la CPU...come si usano le dll?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Includi windows.h nel tuo progetto e usa la Sleep.

    Se il tuo IDE include gia' le librerie comuni di Windows, non hai problemi.

  5. #5
    sisi windows.h la include già nelle sue librerie, la sleep() è una funzione come printf() per esempio?nel senso, è già inclusa e la richiamo solo o devo dichiarare che la uso prima del main come se fosse un prototipo?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La funzione e' Sleep con la S maiuscola ... e' tra quelle delle librerie di windows, non nel runtime del C come per la printf ...

    Prova ...

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Questo è un semplice orologio per una applicazione "console":
    codice:
    #define STRICT
    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include <time.h>
    
    int main (void)
    {
        time_t               t;
        struct tm           *tm;
        int                  sec = -1;
        BOOL                 bExit = FALSE;
        HANDLE               hStdOut;
        CONSOLE_CURSOR_INFO  cci;
    
        hStdOut = GetStdHandle (STD_OUTPUT_HANDLE);
    
        GetConsoleCursorInfo (hStdOut, &cci);
        cci.bVisible = FALSE;
        SetConsoleCursorInfo (hStdOut, &cci);
    
        while (!bExit)
        {
            t = time (NULL);
            tm = localtime (&t);
    
            if (tm->tm_sec != sec)
            {
                printf ("\r%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec);
                sec = tm->tm_sec;
            }
    
            Sleep (100);    // 100 millisecondi
    
            if (_kbhit ())
            {
                getch ();
                bExit = TRUE;
            }
        }
    
        printf ("\n");
    
        cci.bVisible = TRUE;
        SetConsoleCursorInfo (hStdOut, &cci);
    
        return 0;
    }
    Ho usato alcune funzioni "standard" e alcune funzioni specifiche Win32. Avrei potuto usare solamente funzioni Win32 ma diventava un pochino più lungo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    non ho capito una cosa, perchè se io gli chiedo solo tm_hour e tm_min senza nessun ciclo mi resituisce numeri enormi? ti posto il codice

    Codice PHP:
    struct tm *time;
    printf("\n%02d:%02d",time->tm_hour,time->tm_min); 
    mi restituisce come risultato numeri come 2293696:214734434384

    io sto cominciando adesso a fare qualcosa di più complesso in c, ho capito il tuo listato, ma non capisco perchè mi di questo errore..

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti mostro i due codici (nelle parti importanti) e vedi se comprendi la differenza ...

    Ecco il primo ...

    codice:
    time_t t;
    struct tm *tm;
    
    t = time (NULL);
    tm = localtime (&t);
    printf ("\r%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec);
    ed ecco il tuo ...

    codice:
    struct tm *time; 
    printf("\n%02d:%02d",time->tm_hour,time->tm_min);
    Secondo te?

  10. #10
    forse ho capito, io non ho resettato il tempo,giusto?

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.