Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] funzione che restituisce il mese corrente

    Buonasera,

    non riesco a capire come usare la libreria time.h del C per stampare a video
    il mese corrente e anno corrente

    Per esempio se il mese è febbraio e l'anno è 2009
    vorrei poter stampare a video "febbraio 2009".
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  2. #2
    la libreria time.h del C
    time.h è un header, non una libreria.
    Comunque:
    codice:
    #include <time.h>
    #include <locale.h>
    
    int main(void)
    {
        char str[255]="";
        time_t t; 
        setlocale(LC_ALL,"");
        time(&t);
        strftime(str,sizeof(str),"%B %Y",gmtime(&t));
        puts(str);
        return 0;
    }
    .
    Una considerazione personale: ma quanto sono brutte le funzioni di data/ora del C? Quando si decidono a cambiarle?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    grazie per la risposta!!

    vorrei poter salvare mese e anno su due variabili distinte per poterle riutilizzare in seguito.
    Come posso fare?
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da MItaly
    time.h è un header, non una libreria.
    Frequentate tutti la stessa universita' ?

    Una considerazione personale: ma quanto sono brutte le funzioni di data/ora del C? Quando si decidono a cambiarle?
    Concordo ... ma non penso si cambieranno ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da jaso
    grazie per la risposta!!

    vorrei poter salvare mese e anno su due variabili distinte per poterle riutilizzare in seguito.
    Come posso fare?
    Perche' non dai un'occhiata alla struttura time_t ?

    Ovvero, ai componenti della tua variabile t ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    scusate, io pensavo che i file .h fossero file di libreria

    che cosa sono allora i file di libreria?

    cmq ho risolto da solo per la mia precedente domanda
    int main(void)
    {
    char mese[255]="";
    char anno[255]="";

    time_t t;
    setlocale(LC_ALL,"");
    time(&t);
    strftime(mese,sizeof(mese),"%B",gmtime(&t));
    strftime(anno,sizeof(anno),"%Y",gmtime(&t));
    puts(mese);
    puts(anno);

    system("pause");
    return 0;
    }
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  7. #7
    Originariamente inviato da jaso
    scusate, io pensavo che i file .h fossero file di libreria

    che cosa sono allora i file di libreria?
    I file .h sono header, che contengono i prototipi delle funzioni che si trovano in altri file .c da compilare o già compilate nelle librerie statiche. Queste ultime hanno solitamente estensione .lib o .a, e contengono codice già compilato che viene unito con i vari moduli oggetto generati dal compilatore al momento del linking.
    In pratica: nel file .h ci sono le dichiarazioni che spiegano al compilatore come sono fatte le funzioni che intendi usare. Se il compilatore non trova subito la definizione di queste funzioni nel tuo file .c, inserisce nel modulo oggetto che va a generare un appunto del tipo "qui manca una funzione; linker, pensaci tu". Il linker si prende in pasto tutti i moduli oggetto (derivanti dalla compilazione di tutti i file .c) e le librerie (che sono più o meno analoghe ai moduli oggetto, ma che sono già pronte compilate), e li mette insieme, rimpiazzando tutti questi "appunti" del compilatore con chiamate al codice effettivo di queste funzioni che trova negli altri moduli oggetto o nelle librerie. Alla fine di tutto il processo viene generato l'eseguibile.

    Originariamente inviato da oregon
    Frequentate tutti alla stessa universita' ?

    Concordo ... ma non penso si cambieranno ...
    Be', ma io non capisco cosa avessero nel cervello quando hanno fatto il C99: tanto gli costava dichiarare deprecate tutte queste funzioni di time.h (funzioni di libreria standard non rientranti che restituiscono puntatori a buffer interni... pazzi criminali! VVoVe: ) nonché le funzioni non sicure (gets in primis, e tutte le altre a seguire) e introdurre delle varianti sicure (tipo le versioni _s di Visual C++), invece di inventarsi un boolean non compatibile con il C++? Mah...
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da MItaly
    Mah...
    Oltre ad introdurre cose strane come

    int a[n];

    con n variabile che, secondo me, sta incasinando un sacco di studenti ...



    P.S. Volevo scrivere "andate tutti alla stessa università" poi ho scritto "frequentate" ma "alla" è rimasto ... ovviamente e'

    "Frequentate tutti la stessa università" ?

    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    grazie ho capito!
    arrivederci
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  10. #10
    Originariamente inviato da oregon
    Oltre ad introdurre cose strane come

    int a[n];

    con n variabile che, secondo me, sta incasinando un sacco di studenti ...
    Ma vedi, questo non sarebbe neanche troppo malvagio se venisse spiegato agli studenti come funziona (spiegando magari come funzionano in generale le variabili automatiche, cosa sono stack frame e stack pointer) e quando è il caso di preferirlo all'allocazione nell'heap. Il problema è che questi "dettagli" non vengono mai spiegati nei libri introduttivi e tantomeno all'università (come abbiamo visto negli ultimi thread... ).
    Amaro C++, il gusto pieno dell'undefined behavior.

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.