Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tyto funkce vyhledávají a zavírají hledání zadaných názvů souborů:
Poznámky
Funkce _findfirst poskytuje informace o první instanci názvu souboru, který odpovídá souboru zadanému v argumentu filespec . Můžete použít jakoukoli filespec kombinaci zástupných znaků podporovaných hostitelským operačním systémem.
Funkce vrací informace o souboru ve _finddata_t struktuře, která je definována v IO.h. Různé funkce v rodině používají mnoho variant struktury _finddata_t . Základní _finddata_t struktura zahrnuje následující prvky:
unsigned attrib
Atribut souboru.
time_t time_create
Čas vytvoření souboru (-1L pro systémy souborů FAT). Tento čas je uložený ve formátu UTC. Chcete-li převést na místní čas, použijte localtime_s.
time_t time_access
Čas posledního přístupu k souborům (-1L pro systémy souborů FAT). Tento čas je uložený ve formátu UTC. Chcete-li převést na místní čas, použijte localtime_s.
time_t time_write
Čas posledního zápisu do souboru Tento čas je uložený ve formátu UTC. Chcete-li převést na místní čas, použijte localtime_s.
_fsize_t size
Délka souboru v bajtech
char name[ _MAX_PATH] NULL-terminated název odpovídajícího souboru nebo adresáře bez cesty.
V systémech souborů, které nepodporují vytváření a poslední přístupové časy souboru, jako je systém FAT, time_create jsou pole a time_access pole vždy -1L.
_MAX_PATH je definován jako Stdlib.h 260 bajtů.
Nemůžete zadat cílové atributy (například _A_RDONLY) pro omezení operace hledání. Tyto atributy jsou vráceny v attrib poli _finddata_t struktury a mohou mít následující hodnoty (definované v IO.h). Uživatelé by se neměli spoléhat na tyto atributy, které jsou jedinými možnými hodnotami pro attrib dané pole.
_A_ARCH
Archive (Webová aplikace: Archiv). Nastavte pokaždé, když se soubor změní a vymaže příkazem BACKUP . Hodnota: 0x20.
_A_HIDDEN
Skrytý soubor. Příkaz se často nezobrazuje DIR , pokud tuto /AH možnost nepoužíváte. Vrátí informace o normálních souborech a souborech, které mají tento atribut. Hodnota: 0x02.
_A_NORMAL
Normální. Soubor nemá žádné další atributy a nelze je číst nebo zapisovat bez omezení. Hodnota: 0x00.
_A_RDONLY
Jen pro čtení. Soubor nelze otevřít pro zápis a nelze vytvořit soubor se stejným názvem. Hodnota: 0x01.
_A_SUBDIR
Podadresář. Hodnota: 0x10.
_A_SYSTEM
Systémový soubor. Obvykle se příkazem DIR nezobrazuje, pokud /A se nepoužívá možnost nebo /A:S možnost. Hodnota: 0x04.
_findnext najde další název, pokud existuje, který odpovídá argumentu filespec zadanému v dřívějším volání _findfirst. Argument fileinfo by měl odkazovat na strukturu inicializovanou předchozím voláním _findfirst. Pokud se najde shoda, fileinfo obsah struktury se změní, jak je popsáno výše. Jinak zůstane beze změny. _findclose zavře zadaný popisovač vyhledávání a uvolní všechny přidružené prostředky pro oba _findfirst a _findnext. Popisovač vrácený buď _findfirst nebo _findnext musí být nejprve předán _findclose, před operacemi úprav, jako je odstranění, lze provádět s adresáři, které tvoří cesty předané jim.
Funkce můžete vnořit _find . Pokud například volání _findfirst nebo _findnext najde soubor, který je podadresářem, může být nové hledání zahájeno jiným voláním _findfirst nebo _findnext.
_wfindfirsta _wfindnext jsou široce znakové verze a _findnext_findfirst . Argument struktury širokoznakových verzí má _wfinddata_t datový typ, který je definován v IO.h a v Wchar.h. Pole tohoto datového typu jsou stejná jako pole datového _finddata_t typu, s tím rozdílem, že v name _wfinddata_t poli je typ wchar_t namísto typu char. Jinak se _wfindfirst _wfindnext chovají stejně jako _findfirst a _findnext.
_findfirst a _findnext použijte 64bitový typ času. Pokud musíte použít starý 32bitový typ času, můžete definovat _USE_32BIT_TIME_T. Verze těchto funkcí, které mají příponu 32 v jejich názvech, používají 32bitový typ času a ty s 64 příponou používají 64bitový typ času.
Funkce _findfirst32i64, _findnext32i64a _wfindfirst32i64_wfindnext32i64 také se chovají stejně jako 32bitové verze těchto funkcí s výjimkou jejich použití a vrácení 64bitové délky souboru. Functions _findfirst64i32, _findnext64i32a _wfindfirst64i32_wfindnext64i32 používají 64bitový typ času, ale používají 32bitové délky souboru. Tyto funkce používají vhodné varianty _finddata_t typu, ve kterém mají pole různé typy pro čas a velikost souboru.
_finddata_t je ve skutečnosti makro, které se vyhodnotí jako _finddata64i32_t (nebo _finddata32_t pokud _USE_32BIT_TIME_T je definováno). Následující tabulka shrnuje varianty _finddata_t:
| Struktura | Typ času | Typ velikosti souboru |
|---|---|---|
_finddata_t, _wfinddata_t |
__time64_t |
_fsize_t |
_finddata32_t, _wfinddata32_t |
__time32_t |
_fsize_t |
__finddata64_t, _wfinddata64_t |
__time64_t |
__int64 |
_finddata32i64_t, _wfinddata32i64_t |
__time32_t |
__int64 |
_finddata64i32_t, _wfinddata64i32_t |
__time64_t |
_fsize_t |
_fsize_ttypedef je pro unsigned long (32 bitů).
Příklad
// crt_find.c
// This program uses the 32-bit _find functions to print
// a list of all files (and their attributes) with a .C extension
// in the current directory.
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>
int main( void )
{
struct _finddata_t c_file;
intptr_t hFile;
// Find first .c file in current directory
if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
printf( "No *.c files in current directory!\n" );
else
{
printf( "Listing of .c files\n\n" );
printf( "RDO HID SYS ARC FILE DATE %25c SIZE\n", ' ' );
printf( "--- --- --- --- ---- ---- %25c ----\n", ' ' );
do {
char buffer[30];
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
ctime_s( buffer, _countof(buffer), &c_file.time_write );
printf( " %-12s %.24s %9ld\n",
c_file.name, buffer, c_file.size );
} while( _findnext( hFile, &c_file ) == 0 );
_findclose( hFile );
}
}
Listing of .c files
RDO HID SYS ARC FILE DATE SIZE
--- --- --- --- ---- ---- ----
N N N Y blah.c Wed Feb 13 09:21:42 2002 1715
N N N Y test.c Wed Feb 06 14:30:44 2002 312