Kaip rasti failo dydį programuojant C

Kaip Rasti Failo Dydi Programuojant C



Ar esate naujokas C programavimo srityje ir ieškote būdo, kaip sužinoti failo dydį? Niekur kitur neik! Šiame vadove sužinosite, kaip rasti failo dydį programuojant C. Baitų skaičius, naudojamas duomenims laikyti faile, vadinamas failo dydžiu. Žinodami failo dydį, galite atlikti įvairias failų tvarkymo operacijas, įskaitant kopijavimą, skaitymą ar rašymą.

Vadovaudamiesi šioje mokymo programoje paminėtomis nuosekliomis gairėmis ir paprastų kodų pavyzdžiais, galite greitai rasti bet kurio failo dydį.







Raskite failo dydį programoje C

Yra įvairių toliau nurodytų būdų, kaip rasti failo dydį C.



1: naudojant stat() funkciją

C kalboje paprasčiausias būdas sužinoti failo dydį yra naudoti stat() sistemos skambučio funkcija. The stat() funkcija nuskaito failo būsenos informaciją ir išsaugo ją struktūroje. Vienas iš šios struktūros narių yra st_dydis , kuris nurodo failo dydį baitais. Taikant šį metodą nereikės rankiniu būdu perkelti failo žymeklio, todėl juo lengviau naudotis ir kyla mažiau klaidų.



#include
#include

tarp pagrindinis ( )
{
struktūra stat st;
ilgai dydis ;
jeigu ( stat ( 'C_File.txt' , & Šv ) == 0 )
{
dydis = st.st_size;
printf ( 'Failo dydis yra %ld baitų. \n , dydis ) ;
}
grąžinti 0 ;
}


Šis kodas nuskaito failo, vadinamo, dydį C_Failas.txt naudojant stat() metodas iš biblioteka. The st_dydis struct stat elementas, kuriame funkcija saugo informaciją apie failą ir leidžia mums rasti failo dydį. Failo dydis išsaugomas kintamo dydžio, o tada printf() naudojamas dydžiui spausdinti konsolėje kartu su pranešimu. Prieš bandydami pasiekti st_dydis nuosavybė, jei pareiškimas patvirtina, kad stat() funkcijos skambutis buvo sėkmingas. Tada kodas grąžina 0, parodydamas, kad jis buvo sėkmingai paleistas.





Išvestis


2: Fstat() funkcijos naudojimas

Kita funkcija, panaši į stat() yra fstat () funkcija, kuri yra lygiavertė stat() bet veikia atidarytame faile, o ne failo pavadinimu. The fstat () funkcija nuskaito informaciją apie atidarytą failą, aprašytą failo aprašas perėjo prie jo. Nuoroda į atidarytą failą vaizduojama sveikuoju skaičiumi failo aprašas . Panašiai kaip stat(), fstat () grąžina pateikto failo būsenos informaciją, įskaitant jo dydį baitais.



#include
#include
#include

tarp pagrindinis ( ) {
int fd;
struktūra stat st;
fd = atidaryta ( 'C_File.txt' , O_RDONLY ) ;
jeigu ( valstybė ( fd, & Šv ) == - 1 ) {
printf ( „Kaip gauti informaciją apie failą įvyko klaida. \n ) ;
grąžinti 1 ;
}
printf ( 'Failo dydis yra %ld baitų. \n , st.st_size ) ;
Uždaryti ( fd ) ;
grąžinti 0 ;
}


Aukščiau pateiktame kode šiame pavyzdyje failas iš pradžių atidaromas skambinant atviras() funkcija su failo pavadinimu ir O_DONLY parinktis, kuri atidaro failą tik skaitymo režimu. A failo aprašas (fd) grąžina funkcija. Po to mes naudojame fstat () būdas gauti informaciją apie failą, siunčiant jį kaip žymeklį į Šv struktūra kaip antrasis parametras ir failo deskriptorius kaip pirmasis argumentas. The Šv struktūra yra vieta, kur ši funkcija saugo failo informaciją po to, kai jį nuskaito.

Failo dydis baitais, kuris saugomas st_dydis narys Šv struktūra, tada išspausdinamas, jei naudojant nebuvo klaidų fstat () funkcija. Priešingu atveju jis išspausdins klaidos pranešimą.

Išvestis


3: Fseek() ir ftell() funkcijų naudojimas

Kitas būdas sužinoti failo dydį programuojant C yra naudoti fseek () ir ftell() funkcijas. The ftell() metodas grąžina dabartinę failo žymeklio padėtį, o funkcija fseek () perkelia failo žymeklį į nurodytą failo vietą. Failo dydį baitais galite sužinoti naudodami ftell() funkciją, kad gautumėte dabartinę padėtį, kai pasinaudosite fseek () funkcija perkelti failo žymeklį į failo pabaigą.

#include
#include

tarp pagrindinis ( )
{
FAILAS * fp;
ilgai dydis ;

fp = fopen ( 'C_File.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
dydis = ftell ( fp ) ;
fclose ( fp ) ;
printf ( 'Failo dydis = %ld baitų. \n , dydis ) ;

grąžinti 0 ;
}


Aukščiau pateiktame kode naudodami fopen () metodą, programa pirmiausia atidaro C_Failas.txt dvejetainiu režimu. The fseek () tada funkcija naudoja SEEK_END parinktis perkelti failo žymeklį į failo galą. Dabartinė failo vieta, atitinkanti jo dydį baitais, gali būti nustatyta naudojant ftell() funkcija. Tada kodas naudoja fclose () būdas uždaryti failą išspausdinus failo dydį konsolėje.

Išvestis


4: Funkcijos filelength() naudojimas

Kitas būdas yra naudoti failų valdymo biblioteką, kuri suteikia daug failų tvarkymo funkcijų, įskaitant funkcijas, kurias reikia gauti failo dydis . Pavyzdžiui, funkcija failo ilgis () grąžina failo ilgį baitais, atsižvelgiant į jo failo pavadinimą. Šiai funkcijai reikalingas antraštės failas .

Yra ir kita funkcija, _filengthi64(), kuris grąžina failo ilgį baitais, jei failai yra didesni nei 4 GB. Skirtumas tarp šių dviejų funkcijų yra jų grąžinimo reikšmių tipas, kuris parodo, kiek baitų funkcija gali apdoroti.

#include
#include

tarp pagrindinis ( )
{
ilgai dydis ;
char * fvardas = 'C_File.txt' ;
dydis = failo ilgis ( failo nr ( fopenas ( fvardas, 'rb' ) ) ) ;
printf ( 'Failo dydis = %ld baitų. \n , dydis ) ;

grąžinti 0 ;
}


Failo dydis C_Failas.txt baitais gaunamas naudojant šį kodą naudojant „Windows“ failų valdymo biblioteką. Kai pateikiamas atidaryto failo failo aprašas, metodas failo ilgis () grąžina failo ilgį baitais.

fopen () atidaro failą tik skaitymo dvejetainiu režimu šiame kode ir failo numeris () grąžina atidaryto failo deskriptorių. Tada printf() naudojamas failo dydžiui spausdinti. Tada funkcija grąžina 0, o tai rodo, kad ji buvo sėkmingai įvykdyta.

Išvestis


Išvada

Yra keletas būdų, kaip rasti failo dydis baitais C , kiekvienas turi savo privalumų ir trūkumų. Aukščiau pateiktoje mokymo programoje aptariami keturi skirtingi metodai; stat() funkcija, fstat () funkcija, fseek () ir ftell() funkcijas ir failo ilgis () funkcija. Šių funkcijų supratimas padės vartotojams rasti bet kurio jūsų sistemoje esančio failo dydį.