_stat
, _stat32
, , _stat64
, _stati64
, _stat64i32
_stat32i64
, _wstat
, _wstat32
, , _wstat64
, _wstati64
, , _wstat32i64
_wstat64i32
Abrufen von Statusinformationen zu einer Datei.
Syntax
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
);
Parameter
path
Ein Zeiger auf eine Zeichenfolge, die den Pfad einer vorhandenen Datei oder eines vorhandenen Verzeichnisses enthält.
buffer
Ein Zeiger auf die Struktur, in der die Ergebnisse gespeichert werden.
Rückgabewert
Jede dieser Funktionen gibt „0“ zurück, wenn die Dateistatusinformationen abgerufen werden. Ein Rückgabewert von -1 gibt einen Fehler an, in diesem Fall errno
auf ENOENT
", der angibt, dass der Dateiname oder der Pfad nicht gefunden werden konnte. Der Rückgabewert EINVAL
zeigt einen ungültigen Parameter an; errno
wird in diesem Fall ebenfalls auf EINVAL
festgelegt.
Weitere Informationen zu Rückgabecodes finden Sie unter , , _doserrno
, _sys_errlist
und _sys_nerr
.errno
Der Datumsstempel einer Datei kann dargestellt werden, wenn er später als Mitternacht, 1. Januar 1970 und vor 23:59:59, 31. Dezember 3000, UTC dargestellt wird, es sei denn, Sie verwenden _stat32
oder _wstat32
oder definiert _USE_32BIT_TIME_T
haben, in diesem Fall kann das Datum nur bis 23:59:59:59 Januar 18, 2038, UTC dargestellt werden.
Hinweise
Die _stat
-Funktion ruft Informationen zur durch path
angegebenen Datei bzw. dem angegebenen Verzeichnis ab und speichert sie in der Struktur, auf die buffer
verweist. _stat
behandelt Multibyte-Zeichenfolgenargumente automatisch richtig. Die Erkennung von Multibyte-Zeichenfolgen erfolgt auf der Grundlage der aktuell verwendeten Multibyte-Codeseite.
_wstat
ist eine Breitzeichenversion von _stat
. Das path
-Argument für _wstat
ist eine Breitzeichenfolge. _wstat
und _stat
verhalten sich identisch, mit der Ausnahme, dass _wstat
multibyte-Zeichenfolgen nicht behandelt werden.
Variationen dieser Funktionen unterstützen 32-Bit- oder 64-Bit-Zeittypen und 32-Bit- oder 64-Bit-Dateilängen. Das erste numerische Suffix (32
oder 64
) gibt die Größe des verwendeten Zeittyps an; das zweite Suffix ist entweder i32
oder i64
und gibt an, ob die Dateigröße als ganze Zahl mit 32 Bit oder 64 Bit dargestellt ist.
_stat
_stat64i32
entspricht , und struct _stat
enthält eine 64-Bit-Zeit, es sei denn_USE_32BIT_TIME_T
, es wird definiert, in diesem Fall ist das alte Verhalten in Kraft; _stat
verwendet eine 32-Bit-Zeit und struct _stat
enthält eine 32-Bit-Zeit. Gleiches gilt auch für _stati64
.
Hinweis
_wstat
funktioniert nicht mit symbolischen Windows Vista-Verknüpfungen. In diesen Fällen meldet _wstat
immer die Dateigröße „0“. _stat
funktioniert mit symbolischen Verknüpfungen nicht ordnungsgemäß.
Die _stat
-Funktionsreihe verwendet in Visual Studio 2015 CreateFile
, statt FindFirstFile
wie in Visual Studio 2013 und früher. Das bedeutet, dass _stat
bei einem Pfad, der mit einem Schrägstrich endet, erfolgreich ist, wenn der Pfad auf ein Verzeichnis verweist, im Gegensatz zu vorher, als die Funktion bei einem errno
-Wert von ENOENT
fehlschlug.
Diese Funktion überprüft ihre Parameter. Wenn eine oder buffer
mehrere path
Parameter vorhanden sindNULL
, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Varianten ds Uhrzeittyps und Dateilängentyps von _stat
Functions | _USE_32BIT_TIME_T definiert |
Uhrzeittyp | Dateilängentyp |
---|---|---|---|
_stat , _wstat |
Nicht definiert | 64-Bit | 32-Bit |
_stat , _wstat |
Definiert | 32 Bit | 32 Bit |
_stat32 , _wstat32 |
Nicht von der Makrodefinition betroffen | 32 Bit | 32 Bit |
_stat64 , _wstat64 |
Nicht von der Makrodefinition betroffen | 64 Bit | 64 Bit |
_stati64 , _wstati64 |
Nicht definiert | 64 Bit | 64 Bit |
_stati64 , _wstati64 |
Definiert | 32-Bit | 64-Bit |
_stat32i64 , _wstat32i64 |
Nicht von der Makrodefinition betroffen | 32-Bit | 64-Bit |
_stat64i32 , _wstat64i32 |
Nicht von der Makrodefinition betroffen | 64-Bit | 32-Bit |
Mapping generischer Textroutinen
TCHAR.H -Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
Die _stat
in SYS\STAT.H
der Tabelle definierte Struktur enthält die folgenden Felder.
Feld | Beschreibung |
---|---|
st_gid |
Numerischer Bezeichner der Gruppe, die die Datei besitzt (UNIX-spezifisch). Dieses Feld weist auf Windows-Systemen immer den Wert „0“ (null) auf. Eine umgeleitete Datei wird als Windows-Datei klassifiziert. |
st_atime |
Zeitpunkt des letzten Zugriffs auf die Datei. Gültig auf NTFS-, aber nicht auf FAT-formatierten Laufwerken. |
st_ctime |
Uhrzeit der Dateierstellung. Gültig auf NTFS-, aber nicht auf FAT-formatierten Laufwerken. |
st_dev |
Laufwerksnummer des Datenträgers, der die Datei enthält (gleichbedeutend mit st_rdev ). |
st_ino |
Anzahl der Informationsknoten (der inode s) für die Datei (UNIX-spezifisch). Bei UNIX-Dateisystemen beschreibt der inode die Dateistempel für Datum und Uhrzeit, die Berechtigungen und den Inhalt. Wenn Dateien durch einen festen Link miteinander verknüpft sind, besitzen sie den gleichen inode . Der inode und daher auch st_ino ist bei den Dateisystemen FAT, HPFS oder NTFS ohne Bedeutung. |
st_mode |
Bitmaske für Dateimodusinformationen. Das _S_IFDIR -Bit ist festgelegt, wenn path ein Verzeichnis angibt; das _S_IFREG -Bit ist festgelegt, wenn path eine gewöhnliche Datei oder ein Gerät angibt. Lese-/Schreibbits für Benutzer werden entsprechend dem Berechtigungsmodus der Datei festgelegt; Ausführungsbits für Benutzer werden entsprechend der Dateierweiterung festgelegt. |
st_mtime |
Uhrzeit der letzten Änderung der Datei. |
st_nlink |
Bei Nicht-NTFS-Dateisystemen immer „1“. |
st_rdev |
Laufwerksnummer des Datenträgers, der die Datei enthält (gleichbedeutend mit st_dev ). |
st_size |
Größe der Datei in Byte; eine 64-Bit-Ganzzahl für Variationen mit dem i64 Suffix. |
st_uid |
Numerischer Bezeichner des Benutzers, der die Datei besitzt (UNIX-spezifisch). Dieses Feld hat bei Windows-Systemen immer den Wert „0“. Eine umgeleitete Datei wird als Windows-Datei klassifiziert. |
Wenn path
auf ein Gerät verweist, haben die Felder st_size
, die verschiedenen Zeitfelder, st_dev
und st_rdev
in der _stat
-Struktur keine Bedeutung. Da STAT.H
der typ verwendet wird, der _dev_t
in TYPES.H
definiert ist, müssen Sie vor dem STAT.H
Code einschließenTYPES.H
.
Anforderungen
Routine | Erforderlicher Header | Optionale Header |
---|---|---|
_stat , , _stat32 _stat64 , _stati64 , , _stat32i64 _stat64i32 |
<sys/types.h> gefolgt von <sys/stat.h> |
<errno.h> |
_wstat , , _wstat32 _wstat64 , _wstati64 , , _wstat32i64 _wstat64i32 |
<sys/types.h> gefolgt von <sys/stat.h> oder <wchar.h> |
<errno.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Dateibehandlung
_access
, _waccess
_fstat
, , _fstat32
_fstat64
, _fstati64
, , _fstat32i64
_fstat64i32
_getmbcp
_setmbcp