Namespaces
Variants

asctime, asctime_s

From cppreference.net
Défini dans l'en-tête <time.h>
(1)
char * asctime ( const struct tm * time_ptr ) ;
(jusqu'à C23)
[ [ deprecated ] ] char * asctime ( const struct tm * time_ptr ) ;
(depuis C23)
errno_t asctime_s ( char * buf, rsize_t bufsz, const struct tm * time_ptr ) ;
(2) (depuis C11)
1) Convertit le temps calendaire donné tm en une représentation textuelle de la forme fixe de 25 caractères suivante : Www Mmm dd hh : mm : ss yyyy\n
  • Www - abréviation anglaise de trois lettres du jour de la semaine depuis time_ptr - > tm_wday , l'une des valeurs Mon , Tue , Wed , Thu , Fri , Sat , Sun .
  • Mmm - abréviation anglaise de trois lettres du nom du mois depuis time_ptr - > tm_mon , l'une des valeurs Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec .
  • dd - jour du mois sur 2 chiffres depuis timeptr - > tm_mday comme imprimé par sprintf en utilisant % 2d .
  • hh - heure sur 2 chiffres depuis timeptr - > tm_hour comme imprimé par sprintf en utilisant % .2d .
  • mm - minute sur 2 chiffres depuis timeptr - > tm_min comme imprimé par sprintf en utilisant % .2d .
  • ss - seconde sur 2 chiffres depuis timeptr - > tm_sec comme imprimé par sprintf en utilisant % .2d .
  • yyyy - année sur 4 chiffres depuis timeptr - > tm_year + 1900 comme imprimé par sprintf en utilisant % 4d .
Le comportement est indéfini si un membre de * time_ptr est en dehors de sa plage normale.
Le comportement n'est pas défini si l'année civile indiquée par time_ptr - > tm_year comporte plus de 4 chiffres ou est inférieure à l'année 1000.
La fonction ne prend pas en charge la localisation, et le caractère de saut de ligne ne peut pas être supprimé.
La fonction modifie le stockage statique et n'est pas thread-safe.
Cette fonction est obsolète et ne devrait pas être utilisée dans du nouveau code.
(depuis C23)
2) Identique à (1) , sauf que le message est écrit dans le stockage fourni par l'utilisateur buf , qui est garanti d'être terminé par un caractère nul, et les erreurs suivantes sont détectées à l'exécution et appellent la fonction gestionnaire de contraintes actuellement installée :
  • buf ou time_ptr est un pointeur nul
  • bufsz est inférieur à 26 ou supérieur à RSIZE_MAX
  • tous les membres de * time_ptr ne sont pas dans leurs plages normales
  • l'année indiquée par time_ptr - > tm_year est inférieure à 0 ou supérieure à 9999.
Comme pour toutes les fonctions à vérification de limites, asctime_s n'est garantie d'être disponible que si __STDC_LIB_EXT1__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT1__ à la constante entière 1 avant d'inclure <time.h> .

Table des matières

Paramètres

time_ptr - pointeur vers un objet tm spécifiant l'heure à afficher
buf - pointeur vers un tampon fourni par l'utilisateur d'au moins 26 octets de longueur
bufsz - taille du tampon fourni par l'utilisateur

Valeur de retour

1) pointeur vers une chaîne de caractères statique terminée par un caractère nul contenant la représentation textuelle de la date et de l'heure comme décrit ci-dessus. La chaîne peut être partagée entre asctime et ctime , et peut être écrasée à chaque invocation de l'une de ces fonctions.
2) zéro en cas de succès, non nul en cas d'échec, auquel cas buf [ 0 ] est mis à zéro (sauf si buf est un pointeur nul ou bufsz est zéro ou supérieur à RSIZE_MAX ).

Notes

asctime renvoie un pointeur vers des données statiques et n'est pas thread-safe. POSIX marque cette fonction comme obsolète et recommande strftime à la place. La norme C recommande également strftime au lieu de asctime et asctime_s car strftime est plus flexible et sensible aux paramètres régionaux.

POSIX limite les comportements indéfinis uniquement lorsque la chaîne de sortie dépasserait 25 caractères, lorsque timeptr - > tm_wday ou timeptr - > tm_mon ne sont pas dans les plages attendues, ou lorsque timeptr - > tm_year dépasse INT_MAX - 1990 .

Certaines implémentations traitent timeptr - > tm_mday == 0 comme signifiant le dernier jour du mois précédent.

Exemple

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <time.h>
int main(void)
{
    struct tm tm = *localtime(&(time_t){time(NULL)});
    printf("%s", asctime(&tm)); // note implicit trailing '\n'
#ifdef __STDC_LIB_EXT1__
    char str[26];
    asctime_s(str, sizeof str, &tm);
    printf("%s", str);
#endif
}

Sortie possible :

Tue May 26 21:51:50 2015
Tue May 26 21:51:50 2015

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.27.2.1 La fonction asctime (p : 287)
  • K.3.8.2.1 La fonction asctime_s (p : 453-454)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.27.2.1 La fonction asctime (p: 392-393)
  • K.3.8.2.1 La fonction asctime_s (p: 624-625)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.23.3.1 La fonction asctime (p: 341-342)
  • Norme C89/C90 (ISO/CEI 9899:1990) :
  • 4.12.3.1 La fonction asctime

Voir aussi

(obsolète en C23) (C11)
convertit un objet time_t en une représentation textuelle
(fonction)
convertit un objet tm en une représentation textuelle personnalisée
(fonction)
Documentation C++ pour asctime