_strtime_s, _wstrtime_s

Copia l'ora corrente in un buffer. Queste funzioni sono versioni di , _wstrtimecon miglioramenti della_strtime sicurezza, come descritto in Funzionalità di sicurezza in CRT.

Sintassi

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

buffer
Buffer con una lunghezza di almeno 10 byte in cui verrà scritta l'ora.

numberOfElements
Dimensione del buffer.

Valore restituito

Zero in caso di esito positivo.

Se si verifica una condizione di errore, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Il valore restituito è un codice di errore in caso di errore. I codici di errore sono definiti in ERRNO.H. Vedere la tabella seguente per gli errori esatti generati da questa funzione. Per altre informazioni sui codici di errore, vedere errno costanti.

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 < dimensioni < 9 EINVAL Stringa vuota
Non NULL (che punta a un buffer valido) Dimensioni > 9 0 Ora corrente, formattata come specificato nella sezione Note

Problemi di sicurezza

Se il numberOfElements parametro è maggiore di 9, il passaggio di un valore nonNULL valido per il buffer genererà una violazione di accesso.

Il passaggio di un valore per numberOfElements maggiore delle dimensioni effettive del buffer causerà un sovraccarico del buffer.

Osservazioni:

Queste funzioni sono versioni più sicure di _strtime e _wstrtime. La _strtime_s funzione copia l'ora locale corrente nel buffer a buffercui punta . L'ora viene formattata come hh:mm:ss dove hh è costituito da due cifre che rappresentano l'ora nella notazione di 24 ore, mm è costituito da due cifre che rappresentano i minuti precedenti l'ora e ss rappresenta due cifre che rappresentano i secondi. Ad esempio, la stringa 18:23:44 rappresenta 23 minuti e 44 secondi dopo le 6.00. Il buffer deve avere una lunghezza di almeno 9 byte; la dimensione effettiva viene specificata dal secondo parametro.

_wstrtime_s è una versione a caratteri wide di _strtime_s. L'argomento e il valore restituito di _wstrtime_s sono stringhe a caratteri wide. A parte ciò, 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 altre informazioni, vedere Proteggere gli overload dei modelli.

Le versioni della libreria di debug di queste funzioni riempiono prima di tutto il buffer con 0xFE. Per disabilitare questo comportamento, usare _CrtSetDebugFillThreshold.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

Routine TCHAR.H _UNICODE e _MBCS non definito _MBCS definito _UNICODE definito
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

Requisiti

Ciclo Intestazione obbligatoria
_strtime_s <time.h>
_wstrtime_s <time.h> o <wchar.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

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 );

}
OS time:            14:37:49
OS date:            04/25/03

Vedi anche

Gestione orari
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