Namespaces
Variants

ctime, ctime_s

From cppreference.net
Défini dans l'en-tête <time.h>
(1)
char * ctime ( const time_t * timer ) ;
(jusqu'à C23)
[ ] char * ctime ( const time_t * timer ) ;
(depuis C23)
errno_t ctime_s ( char * buf, rsize_t bufsz, const time_t * timer ) ;
(2) (depuis C11)
1) Convertit le temps donné depuis l'époque en heure locale calendaire puis en une représentation textuelle, comme en appelant asctime ( localtime ( timer ) ) ou asctime ( localtime_r ( timer, & ( struct tm ) { 0 } ) ) (depuis C23) . Cette fonction est dépréciée et ne devrait pas être utilisée dans du nouveau code. (depuis C23)
2) Identique à (1) , sauf que la fonction est équivalente à asctime_s ( buf, bufsz, localtime_s ( timer, & ( struct tm ) { 0 } ) ) , et les erreurs suivantes sont détectées à l'exécution et appellent la fonction gestionnaire de contraintes actuellement installée :
  • buf ou timer est un pointeur nul
  • bufsz est inférieur à 26 ou supérieur à RSIZE_MAX
Comme pour toutes les fonctions à vérification de limites, ctime_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> .

La chaîne résultante a le format suivant :

Www Mmm jj hh:mm:ss aaaa\n
  • Www - le jour de la semaine (l'un des Mon , Tue , Wed , Thu , Fri , Sat , Sun ).
  • Mmm - le mois (l'un des Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec ).
  • dd - le jour du mois
  • hh - heures
  • mm - minutes
  • ss - secondes
  • yyyy - années

La fonction ne prend pas en charge la localisation.

Table des matières

Paramètres

timer - pointeur vers un objet time_t spécifiant le temps à afficher
buf - pointeur vers le premier élément d'un tableau de caractères d'une taille d'au moins bufsz
bufsz - nombre maximum d'octets à produire, généralement la taille du tampon pointé par buf

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. 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 (auquel cas la représentation sous forme de chaîne de l'heure a été écrite dans le tableau pointé par buf ), ou non-zéro en cas d'échec (auquel cas, le caractère nul de fin est toujours écrit dans buf [ 0 ] sauf si buf est un pointeur nul ou bufsz est zéro ou supérieur à RSIZE_MAX .

Notes

ctime renvoie un pointeur vers des données statiques et n'est pas thread-safe. De plus, il modifie l'objet statique tm qui peut être partagé avec gmtime et localtime . POSIX marque cette fonction comme obsolète et recommande strftime à la place. La norme C recommande également strftime au lieu de ctime et ctime_s car strftime est plus flexible et sensible aux paramètres régionaux.

Le comportement de ctime n'est pas défini pour les valeurs de time_t qui entraînent une chaîne de plus de 25 caractères (par exemple l'année 10000).

Exemple

#define __STDC_WANT_LIB_EXT1__ 1
#include <time.h>
#include <stdio.h>
int main(void)
{
    time_t result = time(NULL);
    printf("%s", ctime(&result));
#ifdef __STDC_LIB_EXT1__
    char str[26];
    ctime_s(str,sizeof str,&result);
    printf("%s", str);
#endif
}

Sortie possible :

Tue May 26 21:51:03 2015
Tue May 26 21:51:03 2015

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.27.3.2 La fonction ctime (p: 287-288)
  • K.3.8.2.2 La fonction ctime_s (p: 454)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.27.3.2 La fonction ctime (p: 393)
  • K.3.8.2.2 La fonction ctime_s (p: 626)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.23.3.2 La fonction ctime (p: 342)
  • Norme C89/C90 (ISO/CEI 9899:1990) :
  • 4.12.3.2 La fonction ctime

Voir aussi

(obsolète en C23) (C11)
convertit un objet tm en représentation textuelle
(fonction)
convertit un objet tm en représentation textuelle personnalisée
(fonction)