Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C] time.h e fopen

  1. #1

    [C]time.h e fopen

    vorrei trovare informazioni su come usare il time.h per:
    [list=1][*]trovare la data di oggi (gg/mm/aa) e visualizzarla[*]confrontarla con una data inserita in un semplice file di testo[*]modificare questo file (che sarà pieno di date in generale)[/list=1]
    ...
    per aiutarmi mi basta un link che comprenda questi argomenti...ma se avete tempo da perdere e volete darmi una manina... :gren:

  2. #2
    1)
    codice:
    #include <stdio.h>
    #include <time.h>
     
    void main(){
        	
        struct tm *pt;
        time_t td;
        time(&td);
        pt=localtime(&td);
        printf("%0.2d %0.2d %4d\n", pt->tm_mday, pt->tm_mon+1, pt->tm_year+1900);
        
    }
    La 2 e la 3 te le posto appena ho un minuto libero
    ...Terrible warlords, good warlords, and an english song

  3. #3
    ok grazie :gren:

  4. #4
    LETTURA/SCRITTURA in mod. BINARIA
    codice:
    #include <stdio.h>
    #include <time.h>
    
    
    int main(){
        
        FILE* pf;
        long day=0, mon=0, yar=0;
    
    
    	
        struct tm* pt;
        time_t td;
        time (&td);
        pt = localtime (&td);
    
        pt->tm_mon++;
        pt->tm_year = pt->tm_year + 1900;
    
    
    
        if (!(pf = fopen("date.txt", "rb"))){
    		
            printf ("FILE \"date.txt\" NON TROVATO\n");
    	       
        }
    
        else{
    	 	
    	fread (&day, sizeof (long), 1, pf);
    	fread (&mon, sizeof (long), 1, pf);
    	fread (&yar, sizeof (long), 1, pf);
    
    	fclose (pf);
    
        }
    	
    
    
        if ((pt->tm_year > yar) || (pt->tm_year >= yar && pt->tm_mon > mon) || (pt->tm_year >= yar && pt->tm_mon >= mon && pt->tm_mday > day)){
    		
    	pf = fopen("date.txt", "wb");
    
    	fwrite (&pt->tm_mday, sizeof (long), 1, pf);
       	fwrite (&pt->tm_mon, sizeof (long), 1, pf);
       	fwrite (&pt->tm_year, sizeof (long), 1, pf);
    
    	fclose (pf);
    
    	printf ("FILE \"date.txt\" AGGIORNATO\n");
        
        }
    	
        else {
    
    	printf ("FILE \"date.txt\" NON AGGIORNATO\n");
    
        }
    
    
    
        printf ("DATA SUL FILE: %0.2d %0.2d %4d\n", day, mon, yar);
        printf ("DATA  ODIERNA: %0.2d %0.2d %4d\n", pt->tm_mday, pt->tm_mon, pt->tm_year);
    
    
    
        return (0);	
    
    }
    N.B. si presuppone che il file di testo "date.txt" contenga
    soltanto una data (la più aggiornata) ed è scritto/letto in modalità binaria ("non è possibile" quindi editare il file manualmente "tramite NotePad").
    ...Terrible warlords, good warlords, and an english song

  5. #5
    LETTURA/SCRITTURA in mod. TESTO/ASCII
    codice:
    #include <stdio.h>
    #include <time.h>
    
    
    int main(){
        
        FILE* pf;
        long day=0, mon=0, yar=0;
    		
        
    
        struct tm* pt;
        time_t td;
        time (&td);
        pt = localtime (&td);
    
        pt->tm_mon++;
        pt->tm_year = pt->tm_year + 1900;
        		
    
    
        if (!(pf = fopen("date.txt", "r"))){
    		
            printf ("FILE \"date.txt\" NON TROVATO\n");
    	       
        }
    
        else{
    	 	
    	fscanf (pf, "%d", &day);
    	fscanf (pf, "%d", &mon);
    	fscanf (pf, "%d", &yar);
    		
    	fclose (pf);
    
        }
    	
    	
    
        if ((pt->tm_year > yar) || (pt->tm_year >= yar && pt->tm_mon > mon) || (pt->tm_year >= yar && pt->tm_mon >= mon && pt->tm_mday > day)){
    		
            pf = fopen("date.txt", "w");
    	    
    	fprintf(pf, "%0.2d\n", pt->tm_mday);
    	fprintf(pf, "%0.2d\n", pt->tm_mon);
    	fprintf(pf, "%4d\n", pt->tm_year);
    		
    	fclose (pf);
    
    	printf ("FILE \"date.txt\" AGGIORNATO\n");
        
        }
    	
        else {
    
    	printf ("FILE \"date.txt\" NON AGGIORNATO\n");
    
        }
    
        
    
        printf ("DATA SUL FILE: %0.2d %0.2d %4d\n", day, mon, yar);
        printf ("DATA  ODIERNA: %0.2d %0.2d %4d\n", pt->tm_mday, pt->tm_mon, pt->tm_year);
    
        
    
        return (0);	
    
    }
    N.B. si presuppone che il file di testo "date.txt" contenga
    soltanto una data (la più aggiornata) ed è scritto/letto in modalità testo/ascii ("è possibile" quindi editare il file manualmente "tramite NotePad")
    la data deve essere inserita nel file .txt nel seguente modo:
    GG
    MM
    YYYY
    ...Terrible warlords, good warlords, and an english song

  6. #6
    grazie caro
    e se invece io volessi usare il file txt come una specie di database con tante date, sarebbe tutto molto differente?
    o forse nn mi converebbe usare un file di testo come db ma un altro tipo di file/struttura?

    inoltre, posto qui giusto per nn aprire altri topics,oltre a fare le cose suddette, vorrei, visualizzando anke l'ora e i minuti della data, ad un certo orario (che inserisco io ogni volta che voglio), riuscire a spegnere il computer (immagino di poterlo fare scrivendo l'apposita riga dos: rundll.exe,user.exe exitwindows)...
    mi aiutate nel frattempo che io riesca a capire come **** funzionano questi maledetti puntatori?? Grr che nervi gli hai inseriti anke nell'algoritmo che hai postato!!! :bubu:
    ciao

  7. #7
    ho provato a fare un algoritmo per spegnere il comp ad una certa ora ma penso che la cosa sia più complicata di quanto sembra...
    si può fare col c o è troppo difficile?

  8. #8

  9. #9
    struct tm* pt;
    time_t td;
    time (&td);
    pt = localtime (&td);

    cout << pt->tm_hour; // ORA DI SISTEMA
    cout << ":" << pt->tm_min; // MINUTI
    cout << ":" << pt->tm_sec; // SECONDI

    Per spegnere il computer devi quasi sicuramente
    utilizzare le API di windows
    prova a cercare con www.google.com
    "Spegnere il computer con C" o simile
    p.s. meglio se in inglese

    Per utilizzare un file di testo a modi database
    aprilo in append (accoda i nuovi record)
    ORA1
    ORA2
    ORA3
    ECC...

    pf = fopen("date.txt", "a+");
    ...Terrible warlords, good warlords, and an english song

  10. #10

    [C++]Gestione date

    Come ricavo l'ora attuale in formato HH:MM ???
    Posso convertirla in stringa?
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

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.