PDA

Visualizza la versione completa : [C] Funzione in C che restituisca giorno della settimana


PROGMAN
21-08-2009, 00:03
Salve, esiste una funzione in C che data una stringa gg-mm-aaaa, restituisca un giorno (0-6) della settimana ? Ad esempio f(21-08-2009) restituisca 5. Grazie

Metflar
21-08-2009, 09:34
Originariamente inviato da PROGMAN
Salve, esiste una funzione in C che data una stringa gg-mm-aaaa, restituisca un giorno (0-6) della settimana ? Ad esempio f(21-08-2009) restituisca 5. Grazie
http://www.cppreference.com/wiki/c/date/strftime
con %w hai quello che vuoi ^^

PROGMAN
21-08-2009, 11:38
Mi scuso ma sono alle prime armi in c... Ma per avere quel numero (ad esempio 5) devo aver inizializzato il campo t.tm_wday ? Io ho solamente la data e devo capire che giorno da essa, cio se : domenica 0, lunedi 1, martedi 2 ... Il campo t.tm_wday la mia incognita !!!

Grazie !!

Metflar
21-08-2009, 12:31
Originariamente inviato da PROGMAN
Mi scuso ma sono alle prime armi in c... Ma per avere quel numero (ad esempio 5) devo aver inizializzato il campo t.tm_wday ? Io ho solamente la data e devo capire che giorno da essa, cio se : domenica 0, lunedi 1, martedi 2 ... Il campo t.tm_wday la mia incognita !!!

Grazie !!
quello che fa


/* strftime example */
#include <stdio.h>
#include <time.h>

int main ()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [2];

time ( &rawtime );
timeinfo = localtime ( &rawtime );

strftime (buffer,2,"%w",timeinfo);
puts (buffer);

return 0;
}
ho modificato al volo l'esempio nn so se funge
edit: mi uscito 5 si funge ^^

PROGMAN
21-08-2009, 13:46
Grazie 1000 !!! Ho scoperto anche che si pu utilizzare la funzione mktime !!!
Ma cosa time_t ? Ciao ciao !

Metflar
21-08-2009, 14:33
Originariamente inviato da PROGMAN
Grazie 1000 !!! Ho scoperto anche che si pu utilizzare la funzione mktime !!!
Ma cosa time_t ? Ciao ciao !
di niente
http://www.cplusplus.com/reference/clibrary/ctime/time_t/

Roberto90
21-10-2010, 20:38
Ciao, avevo lo stesso problema del ragazzo che ha aperto il post... Ora mi chiedevo per se fosse possibile memorizzare in risultato della funzione in un intero.. ho provato con:


int giorno = strftime (buffer,2,"%w",timeinfo);

oppure

int giorno = (int)today[0]; // ho messo anche 1 come indice


ma niente, non funziona... uno di voi due mi sa dare una dritta?!?!?!

simo_85
22-10-2010, 04:19
Originariamente inviato da Roberto90
int giorno = strftime (buffer,2,"%w",timeinfo);

strftime ritorna il numero di caratteri copiati nel primo argomento, nel tuo caso parliamo della variabile buffer.

int giorno = (int)today[0]; // ho messo anche 1 come indice
Qui non mi molto chiaro cosa stai cercando di fare..

I dati che ti interessano forse sono quelli che devi recuperare usando le funzioni e tipi di dati dichiarati nell' header time.h (http://en.wikipedia.org/wiki/Time.h).
Qui (http://www.cs.utah.edu/dept/old/texinfo/glibc-manual-0.02/library_19.html) c' qualche informazione a riguardo che sicuramente ti pu interessare.

:ciauz:

Roberto90
22-10-2010, 16:04
in pratica volevo salvare il numero del giorno della settimana (0-6), che si ottiene con la funzione, in una variabile intera... ma non ci riesco...
in pratica il 5 (o il numero del giorno in cui siamo) che viene stampato facendo puts(buffer) lo volevo memorizzare in una variabile, ma i tentativi scritti sopra non funzionano...

simo_85
22-10-2010, 21:59
Originariamente inviato da Roberto90
in pratica volevo salvare il numero del giorno della settimana (0-6), che si ottiene con la funzione, in una variabile intera... Lo immaginavo :zizi:
Ti posto un esempio:


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

int main(void)
{
struct tm *date;
time_t t;
char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

t = time(NULL);
date = localtime(&t);

printf("Today is: %s\n", days[date->tm_wday]);
return 0;
}

Vedi grassetto.
:ciauz:

Loading