ctime, ctime_s
Von cppreference.com
| Definiert in 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) Konvertiert die gegebene Zeit seit der Epoche in eine lokale Kalenderzeit und dann in eine Textdarstellung, als ob asctime(localtime(timer)) oder asctime(localtime_r(timer, &(struct tm){0}))(seit C23) aufgerufen würde. Diese Funktion ist veraltet und sollte in neuem Code nicht verwendet werden.(seit C23)
2) Gleiche Funktionalität wie (1), außer dass die Funktion äquivalent zu asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0})) ist, und die folgenden Fehler werden zur Laufzeit erkannt und rufen die aktuell installierte Constraint-Handler-Funktion auf.
-
bufodertimerist ein Nullzeiger -
bufszist kleiner als 26 oder größer als RSIZE_MAX
-
- Wie bei allen grenzgeprüften Funktionen ist
ctime_snur dann garantiert verfügbar, wenn __STDC_LIB_EXT1__ von der Implementierung definiert wird und wenn der Benutzer __STDC_WANT_LIB_EXT1__ vor dem Einbinden von <time.h> auf die ganzzahlige Konstante 1 setzt.
Die resultierende Zeichenkette hat folgendes Format:
Www Mmm dd hh:mm:ss yyyy\n
Www- der Wochentag (einer vonMo,Di,Mi,Do,Fr,Sa,So).Mmm- der Monat (einer vonJan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez).dd- der Tag des Monatshh- Stundenmm- Minutenss- Sekundenjjjj- Jahre
Die Funktion unterstützt keine Lokalisierung.
Inhalt |
[bearbeiten] Parameter
| timer | - | Zeiger auf ein time_t-Objekt, das die zu druckende Zeit angibt |
| buf | - | Zeiger auf das erste Element eines Zeichen-Arrays der Größe mindestens bufsz |
| bufsz | - | maximale Anzahl zu schreibender Bytes, typischerweise die Größe des von buf angezeigten Puffers |
[bearbeiten] Rückgabewert
1) Zeiger auf eine statische, nullterminierte Zeichenkette, die die Textdarstellung 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 Zeichenkettendarstellung der Zeit in das von
buf angezeigte Array geschrieben), oder ungleich Null bei Fehler (in diesem Fall wird das abschließende Nullzeichen immer nach buf[0] geschrieben, es sei denn, buf ist ein Nullzeiger oder bufsz ist Null oder größer als RSIZE_MAX).[bearbeiten] Anmerkungen
ctime gibt einen Zeiger auf statische Daten zurück und ist nicht threadsicher. Darüber hinaus modifiziert es das statische tm-Objekt, das möglicherweise mit gmtime und localtime geteilt wird. POSIX kennzeichnet diese Funktion als veraltet und empfiehlt stattdessen strftime. Der C-Standard empfiehlt ebenfalls strftime anstelle von ctime und ctime_s, da strftime flexibler und lokalisierungsempfindlicher ist.
Das Verhalten von ctime ist undefiniert für time_t-Werte, die zu einer Zeichenkette länger als 25 Zeichen führen (z.B. das Jahr 10000).
[bearbeiten] Beispiel
Führen Sie diesen Code aus
Mögliche Ausgabe
Tue May 26 21:51:03 2015 Tue May 26 21:51:03 2015
[bearbeiten] 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)
- 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
[bearbeiten] Siehe auch
| (in C23 veraltet)(C11) |
konvertiert ein tm-Objekt in eine Textdarstellung (Funktion) |
| konvertiert ein tm-Objekt in eine benutzerdefinierte Textdarstellung (Funktion) | |
| C++-Dokumentation für ctime
| |