_strtime_s, _wstrtime_s
Copiare il tempo corrente in un buffer. Queste sono versioni di _strtime, _wstrtime con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
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
Parametri
[out] buffer
Un buffer, lungo almeno 10 byte, in cui viene scritta l'ora.[in] numberOfElements
Dimensione del buffer.
Valore restituito
Zero se ha esito positivo.
Se si verifica una condizione di errore, viene richiamato il gestore del parametro non valido, come descritto in Convalida dei parametri. Il valore restituito è un codice di errore in presenza di un fallimento. I codici di errore vengono definiti in ERRNO.H; vedere la tabella riportata di seguito per gli esatti errori generati da questa funzione. Per ulteriori informazioni sui codici di errore, consultare costanti di errno.
Condizioni di errore
buffer |
numberOfElements |
Restituzione |
Contenuto di buffer. |
---|---|---|---|
NULL |
(qualsiasi) |
EINVAL |
Non modificato |
Non NULL (che punta a un buffer valido) |
0 |
EINVAL |
Non modificato |
Non NULL (che punta a un buffer valido) |
0 < dimensione < 9 |
EINVAL |
Stringa vuota. |
Non NULL (che punta a un buffer valido) |
Dimensione > 9 |
0 |
Ora corrente formattata come specificato nei commenti |
Problemi relativi alla sicurezza
Passando un valore non null al buffer si avrà una violazione di accesso se il parametro numberOfElements è maggiore di 9.
Passare un valore per numberOfElements di dimensione maggiore della dimensione effettiva del buffer provocherà un sovraccarico del buffer.
Note
Queste funzioni forniscono versioni più sicure di _strtime e di _wstrtime. La funzione di _strtime_s copia l'ora locale corrente nel buffer puntato da timestr*.* Il tempo viene formattato come hh:mm:ss in cui hh è composto da due cifre che rappresentano l'ora in notazione di 24 ore, mm sono due cifre che rappresentano i minuti dopo l'ora e ss sono due cifre che rappresentano i secondi. Ad esempio, la stringa 18:23:44 rappresenta 23 minuti e 44 secondi dopo le 6 del pomeriggio Il buffer deve avere almeno di 9 byte di lunghezza; la dimensione effettiva è specificata dal secondo parametro.
_wstrtime è una versione a caratteri estesi di _strtime; gli argomenti e i valori restituiti di _wstrtime sono stringhe con caratteri estesi. Altrimenti queste funzioni si comportano in modo identico.
In C++ l'utilizzo di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente (eliminando la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le controparti più recenti e sicure. Per ulteriori informazioni, vedere Overload di modelli sicuri.
Mapping di routine a Testo generico:
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tstrtime_s |
_strtime_s |
_strtime_s |
_wstrtime_s |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_strtime_s |
<time.h> |
_wstrtime_s |
<time.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.
Esempio
// 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 );
}
Equivalente .NET Framework
Vedere anche
Riferimenti
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s