Condividi tramite


asctime_s, _wasctime_s

Convertire una struttura temporale tm in una stringa di caratteri. Queste funzioni sono versioni di , _wasctimecon miglioramenti dellaasctime sicurezza, come descritto in Funzionalità di sicurezza in CRT.

Sintassi

errno_t asctime_s(
   char* buffer,
   size_t numberOfElements,
   const struct tm *tmSource
);
errno_t _wasctime_s(
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *tmSource
);
template <size_t size>
errno_t asctime_s(
   char (&buffer)[size],
   const struct tm *tmSource
); // C++ only
template <size_t size>
errno_t _wasctime_s(
   wchar_t (&buffer)[size],
   const struct tm *tmSource
); // C++ only

Parametri

buffer
Puntatore a un buffer per archiviare il risultato della stringa di caratteri. Questa funzione presuppone un puntatore a una posizione di memoria valida con una dimensione specificata da numberOfElements.

numberOfElements
Dimensioni del buffer utilizzato per archiviare il risultato.

tmSource
Struttura di data e ora. Questa funzione presuppone un puntatore a un oggetto struct tm valido.

Valore restituito

Zero in caso di esito positivo. In caso di errore, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, il valore restituito è un codice di errore. I codici di errore sono definiti in ERRNO.H. Per altre informazioni, vedere errno costanti. I codici di errore effettivo restituiti per ogni condizione di errore sono elencati nella tabella seguente.

Condizioni di errore

buffer numberOfElements tmSource Restituzione Valore in buffer
NULL Qualsiasi Qualsiasi EINVAL Non modificato
Non NULL (punta alla memoria valida) 0 Qualsiasi EINVAL Non modificato
Not NULL 0<numberOfElements< 26 Qualsiasi EINVAL Stringa vuota
Not NULL >= 26 NULL EINVAL Stringa vuota
Not NULL >= 26 Struttura temporale non valida o valori fuori intervallo per i componenti dell'ora EINVAL Stringa vuota

Nota

Condizioni di errore per wasctime_s sono simili a asctime_s con l'eccezione che il limite delle dimensioni è misurato in parole.

Osservazioni:

La funzione asctime converte un'ora archiviata come struttura in una stringa di caratteri. Il tmSource valore viene in genere ottenuto da una chiamata a gmtime o localtime. Entrambe le funzioni possono essere usate per compilare una struttura tm, come definito in TIME.H.

membro timeptr Valore
tm_hour Ore dalla mezzanotte (0-23)
tm_isdst Positivo se l'ora legale è attiva; 0 se l'ora legale non è attiva; negativo se lo stato dell'ora legale è sconosciuto. La libreria di runtime C presuppone le regole relative agli Stati Uniti per implementare il calcolo dell'ora legale (DST).
tm_mday Giorno del mese (1-31)
tm_min Minuti dopo l'ora (0-59)
tm_mon Mese (0-11; Gennaio = 0)
tm_sec Secondi dopo minuto (0-59)
tm_wday Giorno della settimana (0-6; Domenica = 0)
tm_yday Giorno dell'anno (0-365; 1 gennaio = 0)
tm_year Anno (anno corrente meno 1900)

La stringa di caratteri convertita viene anche regolata in base alle impostazioni di fuso orario locale. Per informazioni sulla configurazione dell'ora locale, vedere le funzioni , _time32, _ftime32_time64_ftime64_ftimeelocaltime_s , ._localtime64_s_localtime32_stime Per informazioni sulla definizione dell'ambiente del fuso orario e delle variabili globali, vedere _tzset.

Il risultato stringa prodotto da asctime_s contiene esattamente 26 caratteri e ha il formato Wed Jan 2 02:03:55 1980\n\0. Viene usato un formato 24 ore. Tutti i campi hanno una larghezza costante. Il carattere di nuova riga e il carattere null occupano le ultime due posizioni della stringa. Il valore passato come numberOfElements deve essere almeno questa dimensione. Se è minore, verrà restituito un codice di errore, EINVAL, .

_wasctime_s è una versione a caratteri wide di asctime_s. In caso contrario,_wasctime_s e asctime_s si comportano in modo identico.

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
_tasctime_s asctime_s asctime_s _wasctime_s

In C++ l'uso 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. Per altre informazioni, vedere Proteggere gli overload dei modelli.

Requisiti

Ciclo Intestazione obbligatoria
asctime_s <time.h>
_wasctime_s <time.h> o <wchar.h>

Sicurezza

Se il puntatore del buffer non NULL è e il puntatore non punta a un buffer valido, la funzione sovrascriverà qualsiasi elemento nella posizione. Questo errore può anche causare una violazione di accesso.

Se l'argomento di dimensione passato è maggiore della dimensione effettiva del buffer, è possibile che si verifichi un sovraccarico del buffer.

Esempio

Questo programma inserisce l'ora di sistema nell'intero aclocklungo, la converte nella struttura newtimee quindi la converte in formato stringa per l'output, usando la asctime_s funzione .

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
Current date and time: Wed May 14 15:30:17 2003

Vedi anche

Gestione orari
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset