Namespaces
Variants

ctime, ctime_s

From cppreference.net
Definido en el encabezado <time.h>
(1)
char * ctime ( const time_t * timer ) ;
(hasta C23)
[ [ deprecated ] ] char * ctime ( const time_t * timer ) ;
(desde C23)
errno_t ctime_s ( char * buf, rsize_t bufsz, const time_t * timer ) ;
(2) (desde C11)
1) Convierte el tiempo dado desde la época a una hora local calendario y luego a una representación textual, como si se llamara a asctime ( localtime ( timer ) ) o asctime ( localtime_r ( timer, & ( struct tm ) { 0 } ) ) (desde C23) . Esta función está obsoleta y no debe usarse en código nuevo. (desde C23)
2) Igual que (1) , excepto que la función es equivalente a asctime_s ( buf, bufsz, localtime_s ( timer, & ( struct tm ) { 0 } ) ) , y los siguientes errores se detectan en tiempo de ejecución y llaman a la función constraint handler actualmente instalada:
  • buf o timer es un puntero nulo
  • bufsz es menor que 26 o mayor que RSIZE_MAX
Como con todas las funciones con verificación de límites, ctime_s solo está garantizada su disponibilidad si __STDC_LIB_EXT1__ está definido por la implementación y si el usuario define __STDC_WANT_LIB_EXT1__ como la constante entera 1 antes de incluir <time.h> .

La cadena resultante tiene el siguiente formato:

Www Mmm dd hh:mm:ss yyyy\n
  • Www - el día de la semana (uno de Mon , Tue , Wed , Thu , Fri , Sat , Sun ).
  • Mmm - el mes (uno de Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec ).
  • dd - el día del mes
  • hh - horas
  • mm - minutos
  • ss - segundos
  • yyyy - años

La función no admite localización.

Contenidos

Parámetros

timer - puntero a un time_t objeto que especifica el tiempo a imprimir
buf - puntero al primer elemento de un arreglo char de tamaño al menos bufsz
bufsz - número máximo de bytes a generar, típicamente el tamaño del buffer apuntado por buf

Valor de retorno

1) puntero a una cadena de caracteres estática terminada en nulo que contiene la representación textual de fecha y hora. La cadena puede ser compartida entre asctime y ctime , y puede ser sobrescrita en cada invocación de cualquiera de esas funciones.
2) cero en caso de éxito (en cuyo caso la representación de cadena del tiempo ha sido escrita en el array apuntado por buf ), o distinto de cero en caso de fallo (en cuyo caso, el carácter nulo terminador siempre se escribe en buf [ 0 ] a menos que buf sea un puntero nulo o bufsz sea cero o mayor que RSIZE_MAX .

Notas

ctime devuelve un puntero a datos estáticos y no es seguro para hilos. Además, modifica el objeto estático tm que puede ser compartido con gmtime y localtime . POSIX marca esta función como obsoleta y recomienda strftime en su lugar. El estándar C también recomienda strftime en lugar de ctime y ctime_s porque strftime es más flexible y sensible a la configuración regional.

El comportamiento de ctime es indefinido para los valores de time_t que resultan en una cadena de más de 25 caracteres (por ejemplo, el año 10000).

Ejemplo

#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
}

Salida posible:

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

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.27.3.2 La función ctime (p: 287-288)
  • K.3.8.2.2 La función ctime_s (p: 454)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.27.3.2 La función ctime (p: 393)
  • K.3.8.2.2 La función ctime_s (p: 626)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.23.3.2 La función ctime (p: 342)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.12.3.2 La función ctime

Véase también

(obsoleto en C23) (C11)
convierte un objeto tm a una representación textual
(función)
convierte un objeto tm a una representación textual personalizada
(función)