Kuidas leida faili suurust C-programmeerimises

Kuidas Leida Faili Suurust C Programmeerimises



Kas olete C-programmeerimisega uus ja otsite viisi faili suuruse leidmiseks? Ära mine kuhugi mujale! Sellest juhendist saate teada faili suuruse leidmise protsessi C-programmeerimises. Faili sees olevate andmete hoidmiseks kasutatud baitide arvu nimetatakse faili suuruseks. Teades faili suurust, saate teha mitmesuguseid failitöötlustoiminguid, sealhulgas kopeerida, lugeda või kirjutada.

Selles õpetuses mainitud samm-sammuliste juhiste ja lihtsate koodinäidete abil saate kiiresti leida mis tahes faili suuruse.







Faili suuruse leidmine programmis C

Allpool mainitud C-faili suuruse leidmiseks on erinevaid viise.



1: Stat() funktsiooni kasutamine

C-s on faili suuruse väljaselgitamiseks kõige lihtsam viis kasutada stat() süsteemikõne funktsioon. The stat() funktsioon hangib faili olekuteabe ja salvestab selle struktuuri. Üks selle struktuuri liikmetest on st_size , mis annab faili suuruse baitides. See meetod väldib failikursori käsitsi teisaldamist, muutes selle kasutamise lihtsamaks ja tõrkeohutumaks.



#include
#include

int main ( )
{
struktuur stat st;
pikk suurus ;
kui ( stat ( 'C_Fail.txt' , & St ) == 0 )
{
suurus = st.st_size;
printf ( 'Faili suurus on %ld baiti. \n ' , suurus ) ;
}
tagasi 0 ;
}


See kood hangib nimega faili suuruse C_Fail.txt kasutades stat() meetodist raamatukogu. The st_size struct stat element, milles funktsioon hoiab faili kohta teavet ja võimaldab meil leida faili suuruse. Faili suurust hoitakse muutuvas suuruses ja seejärel printf() kasutatakse suuruse printimiseks konsooli koos sõnumiga. Enne kui proovite juurdepääsu st_size atribuut, kinnitab if-avaldus, et stat() funktsiooni kutsumine õnnestus. Seejärel tagastab kood 0, mis näitab, et see toimis edukalt.





Väljund


2: Funktsiooni fstat() kasutamine

Teine sarnane funktsioon stat() on fstat() funktsioon, mis on samaväärne stat() kuid töötab failinime asemel avatud failiga. The fstat() funktsioon hangib teavet avatud faili kohta, mida kirjeldab faili deskriptor läks sellele üle. Viide avatud failile on tähistatud täisarvuga faili deskriptor . Sarnaselt stat(), fstat() tagastab esitatud faili olekuteabe, sealhulgas selle suuruse baitides.



#include
#include
#include

int main ( ) {
int fd;
struktuur stat st;
fd = avatud ( 'C_Fail.txt' , O_RDONLY ) ;
kui ( olek ( fd, & St ) == - 1 ) {
printf ( 'Viga failiteabe hankimisel. \n ' ) ;
tagasi 1 ;
}
printf ( 'Faili suurus on %ld baiti. \n ' , st.st_size ) ;
Sulge ( fd ) ;
tagasi 0 ;
}


Ülaltoodud koodis avatakse fail selles näites algselt, helistades avatud () funktsioon failinime ja O_RDONLY suvand, mis avab faili kirjutuskaitstud režiimis. A faili deskriptor (fd) tagastab funktsioon. Pärast seda kasutame fstat() meetod faili kohta teabe hankimiseks, saates selle viitena failile St teise parameetrina struktuur ja esimese argumendina faili deskriptor. The St struktuur on koht, kus see funktsioon säilitab faili teabe pärast selle allalaadimist.

Faili suurus baitides, mida hoitakse failis st_size liige St struktuur, prinditakse siis, kui rakenduse kasutamisel viga ei esinenud fstat() funktsiooni. Vastasel juhul prindib see veateate.

Väljund


3: Funktsioonide fseek() ja ftell() kasutamine

Veel üks viis C-programmeerimises faili suuruse leidmiseks on kasutada fseek() ja ftell() funktsioonid. The ftell() meetod tagastab failikursori praeguse asukoha, samas kui funktsioon fseek() viib failikursori failis määratud kohta. Faili suuruse baitides leiate, kasutades ftell() funktsioon hetkeasendi hankimiseks pärast funktsiooni kasutamist fseek() funktsioon failikursori viimiseks faili lõppu.

#include
#include

int main ( )
{
FAIL * fp;
pikk suurus ;

fp = fopen ( 'C_Fail.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
suurus = ftell ( fp ) ;
fclose ( fp ) ;
printf ( 'Faili suurus = %ld baiti. \n ' , suurus ) ;

tagasi 0 ;
}


Ülaltoodud koodis kasutades fopen() meetodil, avab rakendus esmalt C_Fail.txt binaarses režiimis. The fseek() funktsioon kasutab seejärel SEEK_END suvand failikursori ümberpaigutamiseks faili lõppu. Faili praeguse asukoha, mis vastab selle suurusele baitides, saab seejärel leida kasutades ftell() funktsiooni. Seejärel kasutab kood fclose() meetod faili sulgemiseks pärast faili suuruse printimist konsooli.

Väljund


4: Filelength() funktsiooni kasutamine

Järgmine meetod on failihalduse teegi kasutamine, mis pakub paljusid failidega manipuleerimise funktsioone, sealhulgas hankimise funktsioone faili suurus . Näiteks funktsioon faili pikkus () tagastab faili pikkuse baitides, arvestades selle failinime. See funktsioon nõuab päisefaili .

On ka teine ​​funktsioon, _filengthi64(), mis tagastab faili pikkuse baitides suuremate kui 4 GB failide puhul. Nende kahe funktsiooni erinevus seisneb nende tagastusväärtuste tüübis, mis näitab, mitu baiti funktsioon suudab käsitleda.

#include
#include

int main ( )
{
pikk suurus ;
char * fname = 'C_Fail.txt' ;
suurus = faili pikkus ( faili nr ( fopen ( fnimi, 'rb' ) ) ) ;
printf ( 'Faili suurus = %ld baiti. \n ' , suurus ) ;

tagasi 0 ;
}


Faili suurus C_Fail.txt baitides saadakse selle koodi abil Windowsi failihaldusteegi abil. Kui antakse avatud faili failideskriptor, siis meetod faili pikkus () tagastab faili pikkuse baitides.

fopen() avab faili selles koodis kirjutuskaitstud binaarrežiimis ja fileno() tagastab avatud faili failideskriptori. Siis printf() kasutatakse faili suuruse printimiseks. Funktsioon tagastab seejärel 0, mis näitab, et see on edukalt käivitatud.

Väljund


Järeldus

Selle leidmiseks on mitu meetodit faili suurus baitides C-s , millest igaühel on oma eelised ja puudused. Ülaltoodud õpetuses käsitletakse nelja erinevat meetodit; stat() funktsioon, fstat() funktsioon, fseek() ja ftell() funktsioonid ja faili pikkus () funktsiooni. Nende funktsioonide mõistmine aitab kasutajatel leida teie süsteemis oleva faili suuruse.