_find funkce _wfind
Tyto funkce hledání a vyhledává názvy zadaný soubor zavřete:
Poznámky
_findfirst Funkce poskytuje informace o první instanci název odpovídající soubor zadaný v souboru filespec argument.Můžete použít v filespec kombinace zástupných znaků, podporovaný hostitelský operační systém.
Funkce vrátí informace o souboru v _finddata_t struktury, která je definována v IO.h.Různé funkce řady použít na více variant _finddata_t struktury.Základní _finddata_t struktura obsahuje 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 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_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]
Název zakončený přiřazeného souboru nebo adresáři bez cesty.
V systémech souborů, které nepodporují vytváření a času posledního přístupu souboru, jako je například systém FAT time_create a time_access pole jsou vždy –1L.
_MAX_PATH v Stdlib.h je definován jako 260 bajtů.
Nelze určit cíl atributy (například _A_RDONLY) operace hledání omezit.Tyto atributy jsou vráceny v attrib pole _finddata_t struktury a může mít následující hodnoty (definované v IO.h).Uživatelé neměli spoléhat na tyto hodnoty pouze pro právě attrib pole.
_A_ARCH
Archiv.Nastavit pokaždé, když je soubor změněn a schválena BACKUP příkaz.Hodnota: 0x20._A_HIDDEN
Skrytý soubor.Obecně Sín s příkazu DIR, pokud nepoužijete /AH možnost.Vrátí informace o běžné soubory a soubory, které mají tento atribut.Hodnota: 0x02._A_NORMAL
Normální.Soubor nemá žádné jiné atributy nastavit a který lze číst nebo zapisovat bez omezení.Hodnota: 0x00._A_RDONLY
Jen pro čteníSoubor nelze otevřít pro zápis a nelze vytvořit soubor, který má stejný název.Hodnota: 0x01._A_SUBDIR
Podadresář.Hodnota: 0x10._A_SYSTEM
Systémový soubor.Není obvykle Sín s DIR příkaz, pokud /A nebo /A:S je použita možnost.Hodnota: 0x04.
_findnextNajde další název, pokud existuje, který odpovídá filespec argument zadaný v předchozí volání k _findfirst.fileinfo Argument směřovat struktury iniciovány předchozí volání k _findfirst.Pokud je nalezena shoda, fileinfo strukturu obsahu jsou změněny výše popsaným způsobem.Jinak je ponechán beze změny._findclosepopisovač hledání se zavře a uvolní všechny přidružené prostředky pro oba _findfirst a _findnext.Popisovač vrácený buď _findfirst nebo _findnext musí být předán nejprve _findclose, před modifikace operace, například odstranění, lze provést na adresáře, které jsou formuláře předávány na cesty.
Můžete vnořit _find funkcí.Například pokud volání _findfirst nebo _findnext vyhledá soubor, který je podadresářem nové hledání lze zahájit jiným voláním na _findfirst nebo _findnext.
_wfindfirsta _wfindnext jsou verze celého znaku _findfirst a _findnext.Struktura argumentu znak wide verzí _wfinddata_t datový typ, který je definován v IO.h a Wchar.h.Pole tohoto typu dat jsou stejné jako _finddata_t typ dat, s výjimkou, že v _wfinddata_t je název pole typu wchar_t místo typu char.Jinak _wfindfirst a _wfindnext chovají identicky na _findfirst a _findnext.
_findfirsta _findnext typ času 64 bit.Pokud je nutné použít typ staré 32bitové času, můžete definovat _USE_32BIT_TIME_T.Verze těchto funkcí, které mají 32 přípon názvů použít typ 32bitové času a s 64 příponu použít typ času 64 bit.
Funkce _findfirst32i64, _findnext32i64, _wfindfirst32i64, a _wfindnext32i64 také chovat stejně typu čas 32bitových verzí tyto funkce s výjimkou jejich použití a vrátit délky souboru 64 bit.Funkce _findfirst64i32, _findnext64i32, _wfindfirst64i32, a _wfindnext64i32použít typ 64 bit času ale použít délky souboru 32-bit.Tyto funkce používají vhodné varianty _finddata_t typu, ve kterém jste pole pro čas a velikost souboru různých typů.
_finddata_tskutečně makro, jehož výsledkem je _finddata64i32_t (nebo _finddata32_t -li _USE_32BIT_TIME_T je definován).Následující tabulka shrnuje variace na _finddata_t:
Struktura |
Typ času |
Zadejte velikost 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_tis a typedef for unsigned long (32 bits).
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 );
}
}