#include #include #include int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); return 1; } struct tm date; time_t timestamp; /* Analyse de la date fournie en argument*/ if (sscanf(argv[1], "%d/%d/%d", &date.tm_mday, &date.tm_mon, &date.tm_year) != 3) { fprintf(stderr, "Format de date invalide. Utilisez le format dd/mm/aa.\n"); return 1; } /*La fonction mktime attend une année en nombre d'années depuis 1900*/ date.tm_year += 100; /*La fonction mktime attend le mois en nombre de mois depuis janvier*/ date.tm_mon--; /*Initialisation des autres champs de la structure tm*/ date.tm_hour = 0; date.tm_min = 0; date.tm_sec = 0; date.tm_wday = 0; date.tm_yday = 0; date.tm_isdst = -1; /*Indéterminé*/ /*Conversion de la structure tm en timestamp*/ timestamp = mktime(&date); if (timestamp == -1) { fprintf(stderr, "Erreur lors de la conversion de la date en timestamp.\n"); return 1; } /*Conversion du timestamp en structure tm pour obtenir le jour de la semaine*/ localtime_r(×tamp, &date); /*Affichage du jour de la semaine*/ const char *jours[] = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"}; printf("C'est un %s.\n", jours[date.tm_wday]); return EXIT_SUCCESS; }