findfirst, _wfindfirst
Nach oben zu dir.h - Index
Header-Datei
dir.h
Kategorie
Verzeichnisbearbeitungsroutinen
Prototyp
int findfirst(const char *pathname, struct ffblk *ffblk, int attrib);
int _wfindfirst( const wchar_t *pathname, struct _wffblk *ffblk, int attrib);
Beschreibung
Durchsucht ein Verzeichnis auf dem Datenträger.
findfirst beginnt, in einem Verzeichnis auf dem Datenträger nach Dateien zu suchen, die durch Attribute oder Platzhalter angegeben werden.
pathname ist ein String mit einer optionalen Angabe von Laufwerkspfad und Dateiname der gesuchten Datei. Nur die Angabe des Dateinamens kann Platzhalterzeichen (wie ? oder *) enthalten. Wenn eine passende Datei gefunden wird, werden die Datei- und Verzeichnisdaten in die Struktur ffblk eingetragen.
Wenn Unicode definiert ist, verwendet die Funktion _wfindfirst die folgende Struktur _wffblk.
struct _wffblk {
long ff_reserved;
long ff_fsize;
unsigned long ff_attrib;
unsigned short ff_ftime;
unsigned short ff_fdate;
wchar_t ff_name[256];
};
Unter Win32 hat die Struktur ffblk folgendes Format:
struct ffblk {
long ff_reserved;
long ff_fsize; /* Dateigröße */
unsigned long ff_attrib; /* Gefundenes Attribut */
unsigned short ff_ftime; /* Erstellungszeit der Datei */
unsigned short ff_fdate; /* Erstellungsdatum der Datei */
char ff_name[256]; /* Gefundener Dateiname */
};
attrib ist ein ein Byte langes Dateiattribut, das zur Auswahl der für die Suche relevanten Dateien dient. Für attrib sollte eine der folgenden in dos.h definierten Konstanten gewählt werden:
FA_RDONLY |
Nur-Lesen-Attribut |
FA_HIDDEN |
Verborgene Datei |
FA_SYSTEM |
Systemdatei |
FA_LABEL |
Datenträgerbezeichner |
FA_DIREC |
Verzeichnis |
FA_ARCH |
Archiv |
Mit OR können mehrere Konstanten miteinander kombiniert werden.
Detailliertere Informationen zu diesen Attributen finden Sie in der Dokumentation Ihres Betriebssystems.
ff_ftime und ff_fdate enthalten Bitfelder zum Verweis auf das aktuelle Datum und die aktuelle Uhrzeit. Die Struktur dieser Felder wurde vom Betriebssystem festgelegt. In beiden Fällen handelt es sich um 16-Bit-Strukturen, die in drei Felder unterteilt sind.
ff_ftime:
Bits 0 bis 4 |
Die resultierenden Sekunden dividiert durch 2 (beispielsweise bedeutet 10 hier 20 Sekunden) |
Bits 5 bis 10 |
Minute |
Bits 11 bis 15 |
Stunde |
ff_fdate:
Bits 0 bis 4 |
Tag |
Bits 5 bis 8 |
Monat |
Bits 9 bis 15 |
Jahre seit 1980 (beispielsweise bedeutet 9 hier 1989) |
Die in io.h deklarierte Struktur ftime enthält Bitfelder für Uhrzeit und Datum, die ähnlich strukturiert sind wie ff_ftime und ff_fdate.
Rückgabewert
findfirst gibt 0 zurück, wenn eine Datei mit dem gesuchten Pfadnamen gefunden wurde.
Wenn keine Dateien mehr vorhanden sind oder wenn der Dateiname falsch angegeben wurde:
- -1 wird zurückgegeben,
- errno wird folgender Wert zugewiesen:
ENOENT |
Path or file name not found (Pfad oder Dateiname nicht gefunden) |
- _doserrno wird einer der folgenden Werte zugewiesen:
ENMFILE |
No more files (Keine weiteren Dateien) |
ENOENT |
Path or file name not found (Pfad oder Dateiname nicht gefunden) |
Beispiel:
/* Beispiel für findfirst und findnext */
#include <stdio.h>
#include <dir.h>
int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}
return 0;
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
findfirst |
+ |
|||
_wfindfirst |
Nur NT |