asctime_s
, _wasctime_s
Convertire una struttura temporale tm
in una stringa di caratteri. Queste funzioni sono versioni di , _wasctime
con 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 | Any | EINVAL |
Non modificato |
Not NULL |
0<numberOfElements < 26 |
Any | 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
_ftime
elocaltime_s
, . _localtime64_s
_localtime32_s
time
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 aclock
lungo, la converte nella struttura newtime
e 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