1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| time_t now = time(0);
// La fonction time() retourne la date et l'heure courante dans un format de type time_t (un type arithmétique adéquat).
// Son argument est un pointeur, ici le pointeur NULL. Il aurait été préférable de le souligner :
// time_t now = time(NULL);
struct tm tstruct;
// Création d'une structure tm pouvant contenir la date et l'heure sous un format plus accessible grace à ses
// différents champs (année, mois, jour du mois, heure, minutes, secondes,...)
char buf[80];
// création d'un tableau de 80 char
tstruct = *localtime(&now);
// localtime() convertit une donnée de date&heure du format time_t en un format struct tm. La donnée de format time_t
// à convertir (now) doit être communiquée à la fonction via son adresse (d'où l'argument &now).
// Elle renvoie l'adresse d'une variable statique de type struct tm contenant les informations (ou NULL en cas d'échec)
// Cette variable statique est obtenue en prenant le contenu de l'adresse renvoyée (espérons qu'elle n'est pas NULL) par
// *localtime(&now) et copiée dans la structure tm tstruct (ce qui est d'ailleurs inutile)
strftime(buf, sizeof(buf), "%X", &tstruct);
// transforme le contenu de la structure tstruct, dont l'adresse est passée en argument (&tstruct) en une chaine
// de caractères exprimant la date et l'heure suivant le format "%X" (voir la doc de la fonction pour les détails
// sur ce format) et la place dans le tableau buf.
// Mais pourquoi avoir créé tstruct pour ça alors qu'il suffisait pour faire la même chose de
// strftime(buf, sizeof(buf), "%X", localtime(&now));
return buf;
// ERREUR fatale :On ne doit jamais retourner l'adresse d'une variable locale puisque cette variable est détruite
// en sortant de son bloc de définition et que cette adresse ne signifie alors plus rien.
// Or buf est, dans ce contexte, l'adresse du premier élément du tableau local buf[] défini dans ce bloc. |
Partager