Partager via


_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