50 lines
1.4 KiB
C
50 lines
1.4 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
|
|
int main(int argc, char *argv[]) {
|
|
if (argc != 2) {
|
|
fprintf(stderr, "Usage: %s <date au format dd/mm/aa>\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;
|
|
}
|