Namespaces
Variants

ctime, ctime_s

From cppreference.net
Definiert im Header <time.h>
(1)
char * ctime ( const time_t * timer ) ;
(bis C23)
[ [ deprecated ] ] char * ctime ( const time_t * timer ) ;
(seit C23)
errno_t ctime_s ( char * buf, rsize_t bufsz, const time_t * timer ) ;
(2) (seit C11)
1) Wandelt die gegebene Zeit seit Epoche in eine lokale Kalenderzeit um und dann in eine textuelle Darstellung, als ob durch Aufruf von asctime ( localtime ( timer ) ) oder asctime ( localtime_r ( timer, & ( struct tm ) { 0 } ) ) (seit C23) . Diese Funktion ist veraltet und sollte nicht in neuem Code verwendet werden. (seit C23)
2) Gleich wie (1) , außer dass die Funktion äquivalent zu asctime_s ( buf, bufsz, localtime_s ( timer, & ( struct tm ) { 0 } ) ) ist, und die folgenden Fehler zur Laufzeit erkannt werden und die aktuell installierte Constraint-Handler-Funktion aufrufen:
  • buf oder timer ist ein Nullzeiger
  • bufsz ist kleiner als 26 oder größer als RSIZE_MAX
Wie bei allen bounds-checked-Funktionen ist ctime_s nur garantiert verfügbar, wenn __STDC_LIB_EXT1__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf den Integer-Konstantenwert 1 setzt, bevor <time.h> eingebunden wird.

Die resultierende Zeichenkette hat folgendes Format:

Www Mmm dd hh:mm:ss yyyy\n
  • Www - der Wochentag (einer von Mon , Tue , Wed , Thu , Fri , Sat , Sun ).
  • Mmm - der Monat (einer von Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec ).
  • dd - der Tag des Monats
  • hh - Stunden
  • mm - Minuten
  • ss - Sekunden
  • yyyy - Jahre

Die Funktion unterstützt keine Lokalisierung.

Inhaltsverzeichnis

Parameter

timer - Zeiger auf ein time_t Objekt, das die auszugebende Zeit spezifiziert
buf - Zeiger auf das erste Element eines char-Arrays mit einer Größe von mindestens bufsz
bufsz - maximale Anzahl an auszugebenden Bytes, typischerweise die Größe des von buf gezeigten Puffers

Rückgabewert

1) Zeiger auf eine statische nullterminierte Zeichenkette, die die textuelle Darstellung von Datum und Uhrzeit enthält. Die Zeichenkette kann zwischen asctime und ctime geteilt werden und kann bei jedem Aufruf einer dieser Funktionen überschrieben werden.
2) Null bei Erfolg (in diesem Fall wurde die Zeichenketten-Darstellung der Zeit in das Array geschrieben, auf das buf zeigt), oder ungleich Null bei Fehler (in diesem Fall wird das abschließende Null-Zeichen immer in buf [ 0 ] geschrieben, es sei denn buf ist ein Nullzeiger oder bufsz ist Null oder größer als RSIZE_MAX .

Hinweise

ctime gibt einen Zeiger auf statische Daten zurück und ist nicht threadsicher. Zusätzlich modifiziert es das statische tm -Objekt, das möglicherweise mit gmtime und localtime geteilt wird. POSIX markiert diese Funktion als veraltet und empfiehlt stattdessen strftime . Der C-Standard empfiehlt ebenfalls strftime anstelle von ctime und ctime_s , da strftime flexibler und lokalisierungssensitiv ist.

Das Verhalten von ctime ist für Werte von time_t undefiniert, die zu einer Zeichenkette mit mehr als 25 Zeichen führen (z.B. Jahr 10000).

Beispiel

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

Mögliche Ausgabe:

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

Referenzen

  • C17-Standard (ISO/IEC 9899:2018):
  • 7.27.3.2 Die ctime-Funktion (S: 287-288)
  • K.3.8.2.2 Die ctime_s-Funktion (S: 454)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.27.3.2 Die ctime-Funktion (S: 393)
  • K.3.8.2.2 Die ctime_s-Funktion (S: 626)
**Übersetzungserläuterungen:** - "C11 standard" → "C11-Standard" (technischer Standardname) - "ctime function" → "ctime-Funktion" (C++-spezifischer Begriff bleibt erhalten) - "ctime_s function" → "ctime_s-Funktion" (C++-spezifischer Begriff bleibt erhalten) - "p:" → "S:" (Seitenangabe auf Deutsch) - HTML-Tags und -Attribute wurden unverändert beibehalten - Formatierung und Struktur entsprechen exakt dem Original
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.23.3.2 Die ctime-Funktion (S: 342)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.12.3.2 Die ctime-Funktion

Siehe auch

(in C23 veraltet) (C11)
konvertiert ein tm -Objekt in eine textuelle Darstellung
(Funktion)
konvertiert ein tm -Objekt in eine benutzerdefinierte textuelle Darstellung
(Funktion)