_strtime_s
, _wstrtime_s
Copient l’heure actuelle dans une mémoire tampon. Ces fonctions sont des versions de _strtime
, _wstrtime
avec des améliorations de sécurité, comme indiqué dans Fonctionnalités de sécurité dans le CRT.
Syntaxe
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
Paramètres
buffer
Mémoire tampon, d’une longueur d’au moins 10 octets, dans laquelle l’heure doit être écrite.
numberOfElements
Taille de la mémoire tampon.
Valeur retournée
Zéro si l’opération aboutit.
Si une condition d’erreur se produit, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. La valeur renvoyée est un code d’erreur en cas de défaillance. Les codes d’erreur sont définis dans ERRNO.H. Consultez le tableau suivant pour en savoir plus sur les erreurs générées exactement par cette fonction. Pour plus d’informations sur les codes d’erreur, consultez errno
les constantes.
Conditions d’erreur
buffer |
numberOfElements |
Retour | Contenu de buffer |
---|---|---|---|
NULL |
(indifférent) | EINVAL |
Non modifié |
Non NULL (pointant vers la mémoire tampon valide) |
0 | EINVAL |
Non modifié |
Non NULL (pointant vers la mémoire tampon valide) |
0 < taille < 9 | EINVAL |
Chaîne vide |
Non NULL (pointant vers la mémoire tampon valide) |
Taille > 9 | 0 | Heure actuelle au format spécifié dans la section Notes |
Problèmes de sécurité
La transmission d’une valeur nonNULL
valide pour la mémoire tampon entraîne une violation d’accès si le numberOfElements
paramètre est supérieur à 9.
La transmission d’une valeur pour numberOfElements
qui est supérieure à la taille réelle de la mémoire tampon occasionne un dépassement de la mémoire tampon.
Notes
Ces fonctions offrent des versions plus sécurisées de _strtime
et _wstrtime
. La _strtime_s
fonction copie l’heure locale actuelle dans la mémoire tampon pointée par buffer
. L’heure est mise en forme comme hh :mm :ss , où hh
est deux chiffres représentant l’heure en notation de 24 heures, mm
est deux chiffres représentant les minutes passées l’heure, et ss
deux chiffres représentant des secondes. Par exemple, la chaîne 18:23:44 représente 23 minutes et 44 secondes après 6 heures. La mémoire tampon doit comporter au moins 9 octets de long ; la taille réelle est spécifiée par le deuxième paramètre.
_wstrtime_s
est une version à caractères larges de _strtime_s
; l'argument et la valeur de retour de _wstrtime_s
sont des chaînes à caractères larges. Ces fonctions se comportent sinon de façon identique.
En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire la longueur de la mémoire tampon automatiquement (ce qui évite d’avoir à spécifier un argument taille) et peuvent remplacer automatiquement les fonctions plus anciennes et non sécurisées par leurs équivalentes plus récentes et sécurisées. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.
Les versions de bibliothèque de débogage de ces fonctions remplissent d’abord la mémoire tampon avec 0xFE. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappage de routine de texte générique
Routine TCHAR.H | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tstrtime_s |
_strtime_s |
_strtime_s |
_wstrtime_s |
Spécifications
Routine | En-tête requis |
---|---|
_strtime_s |
<time.h> |
_wstrtime_s |
<time.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// 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
Voir aussi
Gestion des horaires
asctime_s
, _wasctime_s
ctime_s
, , _ctime32_s
, _wctime_s
_ctime64_s
, , _wctime32_s
_wctime64_s
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime_s
, , _localtime32_s
_localtime64_s
mktime
, , _mktime32
_mktime64
time
, , _time32
_time64
_tzset