_stat
, , _stat32
, _stati64
, , _stat64i32
_wstati64
_wstat32i64
_wstat
_wstat64
_wstat32
_stat32i64
_stat64
_wstat64i32
Obtenir des informations sur l’état d’un fichier.
Syntaxe
int _stat(
const char *path,
struct _stat *buffer
);
int _stat32(
const char *path,
struct __stat32 *buffer
);
int _stat64(
const char *path,
struct __stat64 *buffer
);
int _stati64(
const char *path,
struct _stati64 *buffer
);
int _stat32i64(
const char *path,
struct _stat32i64 *buffer
);
int _stat64i32(
const char *path,
struct _stat64i32 *buffer
);
int _wstat(
const wchar_t *path,
struct _stat *buffer
);
int _wstat32(
const wchar_t *path,
struct __stat32 *buffer
);
int _wstat64(
const wchar_t *path,
struct __stat64 *buffer
);
int _wstati64(
const wchar_t *path,
struct _stati64 *buffer
);
int _wstat32i64(
const wchar_t *path,
struct _stat32i64 *buffer
);
int _wstat64i32(
const wchar_t *path,
struct _stat64i32 *buffer
);
Paramètres
path
Pointeur vers une chaîne contenant le chemin d’accès du fichier ou répertoire existant.
buffer
Pointeur vers une structure qui stocke les résultats.
Valeur retournée
Chacune de ces fonctions retourne 0 si les informations sur l’état des fichiers sont obtenues. Une valeur de retour de -1 indique une erreur, auquel cas errno
est définie ENOENT
, indiquant que le nom de fichier ou le chemin d’accès est introuvable. Une valeur de retour de EINVAL
indique un paramètre non valide ; dans ce cas, errno
prend également la valeur EINVAL
.
Pour plus d’informations sur les codes de retour, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
L’horodatage d’un fichier peut être représenté s’il est antérieur à minuit, le 1er janvier 1970 et avant le 23:59:59:59, le 31 décembre 3000, UTC, sauf si vous utilisez _stat32
ou _wstat32
si vous avez défini _USE_32BIT_TIME_T
, auquel cas la date peut être représentée uniquement jusqu’à 23:59:59:59 janvier 2038, UTC.
Notes
La fonction _stat
obtient des informations sur le fichier ou le répertoire spécifié par path
et les stocke dans la structure vers laquelle buffer
pointe. _stat
gère automatiquement les arguments de chaîne de caractères multioctets si nécessaire, en identifiant les séquences de caractères multioctets en fonction de la page de codes multioctets en cours d’utilisation.
_wstat
est une version à caractères larges de _stat
; l'argument path
de _wstat
est une chaîne à caractères larges. _wstat
et _stat
se comportent de la même façon, sauf que _wstat
cela ne gère pas les chaînes de caractères multioctets.
Les variantes de ces fonctions prennent en charge les types de temps 32 bits ou 64 bits et les longueurs de fichier 32 bits ou 64 bits. Le premier suffixe numérique (32
ou 64
) indique la taille du type d’heure utilisé ; le deuxième suffixe est i32
ou i64
, qui indique si la taille du fichier est représentée comme un entier 32 bits ou 64 bits.
_stat
équivaut à _stat64i32
, et struct _stat
contient une heure 64 bits, sauf si _USE_32BIT_TIME_T
elle est définie, auquel cas l’ancien comportement est en vigueur ; _stat
utilise une heure 32 bits et struct _stat
contient une heure 32 bits. La même remarque s’applique à _stati64
.
Remarque
_wstat
ne fonctionne pas avec les liens symboliques Windows Vista. Dans ce cas, _wstat
indique toujours une taille de fichier de 0. _stat
fonctionne correctement avec les liens symboliques.
La famille de fonctions _stat
utilise CreateFile
dans Visual Studio 2015, plutôt que FindFirstFile
comme dans Visual Studio 2013 et versions antérieures. Cela signifie que _stat
sur un chemin se terminant par une barre oblique réussit si le chemin fait référence à un répertoire, alors qu’auparavant la fonction générait une erreur avec errno
défini sur ENOENT
.
Cette fonction valide ses paramètres. Si l’un path
ou l’autre buffer
est NULL
le cas, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Variations des types de données d’heure et de taille de fichier de _stat
Functions | _USE_32BIT_TIME_T défini |
Type de temps | Type de longueur de fichier |
---|---|---|---|
_stat , _wstat |
Non défini | 64 bits | 32 bits |
_stat , _wstat |
Défini | 32 bits | 32 bits |
_stat32 , _wstat32 |
Non affecté par la définition de macro | 32 bits | 32 bits |
_stat64 , _wstat64 |
Non affecté par la définition de macro | 64 bits | 64 bits |
_stati64 , _wstati64 |
Non défini | 64 bits | 64 bits |
_stati64 , _wstati64 |
Défini | 32 bits | 64 bits |
_stat32i64 , _wstat32i64 |
Non affecté par la définition de macro | 32 bits | 64 bits |
_stat64i32 , _wstat64i32 |
Non affecté par la définition de macro | 64 bits | 32 bits |
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
La _stat
structure, définie dans SYS\STAT.H
, inclut les champs suivants.
Champ | Description |
---|---|
st_gid |
Identificateur numérique du groupe propriétaire du fichier (propre à UNIX). Ce champ est toujours zéro sur les systèmes Windows. Un fichier de redirection est classé comme un fichier Windows. |
st_atime |
Heure du dernier accès au fichier. Valide sur NTFS, mais pas sur les lecteurs de disque au format FAT. |
st_ctime |
Heure de création du fichier. Valide sur NTFS, mais pas sur les lecteurs de disque au format FAT. |
st_dev |
Numéro de lecteur du disque contenant le fichier (identique à st_rdev ). |
st_ino |
Numéro du nœud d’informations (le inode ) du fichier (propre à UNIX). Sur les systèmes de fichiers UNIX, le inode décrit la date et l’heure du fichier, les horodatages, les autorisations et le contenu. Lorsque les fichiers sont liés par des liens physiques, ils partagent le même inode . Le inode , et par conséquent st_ino , n’a aucune signification dans les systèmes de fichiers FAT, HPFS et NTFS. |
st_mode |
Masque de bits pour les informations relatives au mode de fichier. Le bit _S_IFDIR est défini si path spécifie un répertoire. Le bit _S_IFREG est défini si path spécifie un fichier ordinaire ou un périphérique. Les bits de lecture/écriture utilisateur sont définis en fonction du mode d’autorisation du fichier. Les bits d’exécution utilisateur sont définis en fonction de l’extension de nom de fichier. |
st_mtime |
Heure de dernière modification du fichier. |
st_nlink |
Toujours 1 sur les systèmes de fichiers autres que NTFS. |
st_rdev |
Numéro de lecteur du disque contenant le fichier (identique à st_dev ). |
st_size |
Taille du fichier en octets ; entier 64 bits pour les variantes avec le i64 suffixe. |
st_uid |
Identificateur numérique de l’utilisateur propriétaire du fichier (propre à UNIX). Ce champ est toujours zéro sur les systèmes Windows. Un fichier de redirection est classé comme un fichier Windows. |
Si path
fait référence à un périphérique, le st_size
, divers champs d’heure et les champs st_dev
et st_rdev
dans la structure _stat
n’ont aucune signification. Étant donné que STAT.H
vous utilisez le _dev_t
type défini dans TYPES.H
, vous devez inclure TYPES.H
avant STAT.H
dans votre code.
Spécifications
Routine | En-tête requis | En-têtes facultatifs |
---|---|---|
_stat , , _stat32 , _stati64 _stat64 , , _stat32i64 _stat64i32 |
<sys/types.h> suivi de <sys/stat.h> |
<errno.h> |
_wstat , , _wstat32 , _wstati64 _wstat64 , , _wstat32i64 _wstat64i32 |
<sys/types.h> suivi ou <sys/stat.h> <wchar.h> |
<errno.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
struct _stat buf;
int result;
char timebuf[26];
char* filename = "crt_stat.c";
errno_t err;
// Get data associated with "crt_stat.c":
result = _stat( filename, &buf );
// Check if statistics are valid:
if( result != 0 )
{
perror( "Problem getting information" );
switch (errno)
{
case ENOENT:
printf("File %s not found.\n", filename);
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error in _stat.\n");
}
}
else
{
// Output some of the statistics:
printf( "File size : %ld\n", buf.st_size );
printf( "Drive : %c:\n", buf.st_dev + 'A' );
err = ctime_s(timebuf, 26, &buf.st_mtime);
if (err)
{
printf("Invalid arguments to ctime_s.");
exit(1);
}
printf( "Time modified : %s", timebuf );
}
}
File size : 732
Drive : C:
Time modified : Thu Feb 07 14:39:36 2002
Voir aussi
Gestion des fichiers
_access
, _waccess
_fstat
, , _fstat32
, _fstati64
_fstat64
, , _fstat32i64
_fstat64i32
_getmbcp
_setmbcp