_strtime_s
, _wstrtime_s
Kopieren der aktuellen Zeit in einen Puffer. Diese Funktionen sind Versionen von _strtime
, _wstrtime
mit Sicherheitsverbesserungen wie unter Sicherheitsfunktionen in der CRT beschrieben.
Syntax
errno_t _strtime_s(
char *buffer,
size_t numberOfElements
);
errno_t _wstrtime_s(
wchar_t *buffer,
size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
wchar_t (&buffer)[size]
); // C++ only
Parameter
buffer
Ein mindestens 10 Bytes langer Puffer, in den die Zeit geschrieben wird.
numberOfElements
Die Größe des Puffers.
Rückgabewert
Null, wenn erfolgreich.
Wenn eine Fehlerbedingung auftritt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Der Rückgabewert ist ein Fehlercode, falls ein Fehler auftritt. Fehlercodes sind in ERRNO.H definiert. Die genauen Fehler, die von der Funktion generiert werden, finden Sie in der folgenden Tabelle. Weitere Informationen zu Fehlercodes finden Sie unter errno
Konstanten.
Fehlerbedingungen
buffer |
numberOfElements |
Return | Inhalt von buffer |
---|---|---|---|
NULL |
(alle) | EINVAL |
Not modified (Nicht geändert) |
Nicht NULL (zeigt auf gültigen Puffer) |
0 | EINVAL |
Not modified (Nicht geändert) |
Nicht NULL (zeigt auf gültigen Puffer) |
0 < Größe < 9 | EINVAL |
Leere Zeichenfolge |
Nicht NULL (zeigt auf gültigen Puffer) |
Größe > 9 | 0 | Aktuelle Zeit, wie sie in den Hinweisen angegeben wurde |
Sicherheitsprobleme
Das Übergeben eines ungültigen Nicht-WertsNULL
für den Puffer führt zu einer Zugriffsverletzung, wenn der numberOfElements
Parameter größer als 9 ist.
Die Übergabe eines Werts für numberOfElements
, der größer als die tatsächliche Größe des Puffers ist, führt zu einem Pufferüberlauf.
Hinweise
Diese Funktionen bieten sicherere Versionen von _strtime
und _wstrtime
. Die _strtime_s
Funktion kopiert die aktuelle Ortszeit in den Puffer, auf den verwiesen wird.buffer
Die Uhrzeit wird als "hh:mm:ss" formatiert, wobei hh
es sich um zwei Ziffern handelt, die die Stunde in 24-Stunden-Notation darstellen, mm
zwei Ziffern sind, die die Minuten hinter der Stunde darstellen, und ss
es handelt sich um zwei Ziffern, die Sekunden darstellen. Die Zeichenfolge 18:23:44 stellt beispielsweise 23 Minuten und 44 Sekunden nach 18:00 Uhr dar. Der Puffer muss mindestens 9 Byte lang sein; die tatsächliche Größe wird durch den zweiten Parameter angegeben.
_wstrtime_s
ist eine Breitzeichenversion von _strtime_s
. Das Argument und der Rückgabewert von _wstrtime_s
sind Zeichenfolgen mit Breitzeichen. Anderenfalls verhalten sich diese Funktionen identisch.
In C++ wird die Verwendung dieser Funktionen durch Vorlagenüberladungen vereinfacht; die Überladungen können automatisch Rückschlüsse auf die Pufferlänge ziehen (wodurch kein Größenargument mehr angegeben werden muss), und sie können automatisch die älteren, nicht sicheren Funktionen durch ihre neueren, sicheren Entsprechungen ersetzen. Weitere Informationen finden Sie unter Secure Template Overloads.
Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThreshold
zum Deaktivieren dieses Verhaltens .
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Generische Textroutinenzuordnung
TCHAR.H-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tstrtime_s |
_strtime_s |
_strtime_s |
_wstrtime_s |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_strtime_s |
<time.h> |
_wstrtime_s |
<time.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// strtime_s.c
#include <time.h>
#include <stdio.h>
int main()
{
char tmpbuf[9];
errno_t err;
// Set time zone from TZ environment variable. If TZ is not set,
// the operating system is queried to obtain the default value
// for the variable.
//
_tzset();
// Display operating system-style date and time.
err = _strtime_s( tmpbuf, 9 );
if (err)
{
printf("_strdate_s failed due to an invalid argument.");
exit(1);
}
printf( "OS time:\t\t\t\t%s\n", tmpbuf );
err = _strdate_s( tmpbuf, 9 );
if (err)
{
printf("_strdate_s failed due to an invalid argument.");
exit(1);
}
printf( "OS date:\t\t\t\t%s\n", tmpbuf );
}
OS time: 14:37:49
OS date: 04/25/03
Siehe auch
Zeitverwaltung
asctime_s
, _wasctime_s
ctime_s
, , _ctime32_s
_ctime64_s
, _wctime_s
, , _wctime32_s
_wctime64_s
gmtime_s
, _gmtime32_s
_gmtime64_s
localtime_s
, _localtime32_s
_localtime64_s
mktime
, _mktime32
_mktime64
time
, _time32
_time64
_tzset