asctime_s, _wasctime_s
convertissez une structure de temps d' tm à une chaîne de caractères.Ces fonctions sont des versions d' asctime, _wasctime avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.
errno_t asctime_s(
char* buffer,
size_t numberOfElements,
const struct tm *_tm
);
errno_t _wasctime_s(
wchar_t* buffer,
size_t numberOfElements
const struct tm *_tm
);
template <size_t size>
errno_t asctime_s(
char (&buffer)[size],
const struct tm *_tm
); // C++ only
template <size_t size>
errno_t _wasctime_s(
wchar_t (&buffer)[size],
const struct tm *_tm
); // C++ only
Paramètres
buffer
[out] Un pointeur vers une mémoire tampon pour stocker le résultat de chaînes.Cette fonction a un pointeur vers un emplacement mémoire valide avec une taille spécifiée par numberOfElements.numberOfElements
[in] La taille de la mémoire tampon utilisée pour stocker le résultat._tm
[in] structure d'heure/date.Cette fonction a un pointeur vers un objet valide d' structtm .
Valeur de retour
Zéro si l'opération a réussi.S'il existe un échec, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, la valeur de retour est un code d'erreur.Les codes d'erreur sont définis dans ERRNO.H.Pour plus d'informations, consultez constantes d'errno.Les codes d'erreur retournés réels pour chaque condition d'erreur sont présentés dans le tableau suivant.
conditions d'erreur
buffer |
numberOfElements |
tm |
Return |
valeur dans buffer |
---|---|---|---|---|
NULL |
Any |
Any |
EINVAL |
non modifié |
PasNULL (pointe vers une mémoire non valide) |
0 |
Any |
EINVAL |
non modifié |
pas NULL |
0< taille < 26 |
Any |
EINVAL |
Chaîne vide |
pas NULL |
>= 26 |
NULL |
EINVAL |
Chaîne vide |
pas NULL |
>= 26 |
Structure non valide de temps ou valeurs hors limites pour les composants du temps |
EINVAL |
Chaîne vide |
[!REMARQUE]
Les conditions d'erreur pour wasctime_s sont semblables à asctime_s excepté que la limite de taille est mesurée en les mots.
Notes
La fonction d' asctime convertit une heure enregistré en tant que structure à une chaîne de caractères.La valeur d' _tm est généralement obtenue à partir d'un appel à gmtime ou à localtime.les deux fonctions peuvent être utilisées pour compléter une structure d' tm , comme défini dans TIME.H.
membre de timeptr |
Valeur |
---|---|
tm_hour |
Heures depuis minuit (0-23) |
tm_isdst |
Positif si l'heure d'été est activé ; 0 si l'heure d'été n'est pas appliqué ; négatif si l'état d'heure d'été est inconnu.La bibliothèque Runtime C utilise des règles des états-unis pour implémenter le calcul de l'heure d' (DST)été. |
tm_mday |
jour du mois (1-31) |
tm_min |
minutes après l'heure (0-59) |
tm_mon |
mois (0-11 ; janvier = 0) |
tm_sec |
secondes après la minute (0-59) |
tm_wday |
jour de la semaine (0-6 ; dimanche = 0) |
tm_yday |
jour de l'année (0-365 ; 1er janvier = 0) |
tm_year |
Année (année en cours moins 1900) |
La chaîne de caractères convertie est également ajustée en fonction de les paramètres de fuseau horaire local.Voir time, _time32, _time64, _ftime, _ftime32, _ftime64, et les fonctions de localtime_s, _localtime32_s, _localtime64_s pour plus d'informations sur la configuration de l'heure locale et une fonctionnalité de _tzset pour plus d'informations sur la définition de l'environnement et les variables globales de fuseau horaire.
Le résultat de chaîne produit par asctime_s contient exactement 26 caractères et a la forme Wed Jan 02 02:03:55 1980\n\0.Une horloge au format 24 heures est utilisé.tous les champs ont une largeur constante.Le caractère de saut de ligne et le caractère NULL occupent les deux dernières positions de la chaîne.La valeur passée comme deuxième paramètre doit être au moins cela grande.S'il est inférieur, le code d'erreur, EINVAL, est retourné.
_wasctime_s est une version à caractère élargi d' asctime_s._wasctime_s et asctime_s se comportent de sinon.
mappage de routines de texte générique
routine de TCHAR.H |
_MBCS & de _UNICODE non défini |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tasctime_s |
asctime_s |
asctime_s |
_wasctime_s |
En C++, à l'aide de ces fonctions est simplifié par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument de taille.Pour plus d'informations, consultez Surcharges sécurisées de modèle.
Configuration requise
routine |
en-tête requis |
---|---|
asctime_s |
<time.h> |
_wasctime_s |
<time.h> ou <wchar.h> |
Sécurité
Si le pointeur de mémoire tampon n'est pas NULL et le pointeur n'indique pas une mémoire tampon valide, la fonction remplace celui qui se trouve à l'emplacement.Cela peut également entraîner une violation d'accès.
dépassement de mémoire tampon peut se produire si l'argument de taille passé est supérieur à la grandeur réelle de la mémoire tampon.
Exemple
Ce programme place l'heure système dans long aclockentier, la traduction dans la structure newtime puis le convertit au format de chaîne pour la sortie, à l'aide de la fonction d' asctime_s .
// 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;
}
Équivalent .NET Framework
Voir aussi
Référence
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s