Cum să găsiți dimensiunea unui fișier în programarea C

Cum Sa Gasiti Dimensiunea Unui Fisier In Programarea C



Sunteți nou în programarea C și căutați o modalitate de a găsi dimensiunea unui fișier? Du-te nicăieri altundeva! În acest ghid, veți învăța procesul de găsire a dimensiunii unui fișier în programarea C. Numărul de octeți utilizați pentru a păstra datele într-un fișier este denumit dimensiunea fișierului. Cunoscând dimensiunea fișierului, puteți efectua diverse operațiuni de gestionare a fișierelor, inclusiv copierea, citirea sau scrierea.

Prin ghidurile pas cu pas menționate în acest tutorial și prin exemple de cod simple, puteți găsi rapid dimensiunea oricărui fișier.







Găsiți dimensiunea unui fișier în programarea C

Există diferite moduri de a găsi dimensiunea unui fișier în C menționate mai jos.



1: Folosind funcția stat().

În C, cea mai simplă metodă de a afla dimensiunea unui fișier este folosirea stat() funcția de apel de sistem. The stat() funcția preia informațiile despre starea fișierului și le stochează într-o structură. Unul dintre membrii acestei structuri este st_size , care oferă dimensiunea fișierului în octeți. Această metodă evită mutarea manuală a indicatorului de fișier, făcându-l mai ușor de utilizat și mai puțin predispus la erori.



#include
#include

int principal ( )
{
struct stat Sf;
lung mărimea ;
dacă ( stat ( „C_File.txt” , & Sf ) == 0 )
{
mărimea = st.st_size;
printf ( „Dimensiunea fișierului este de %ld octeți. \n ' , mărimea ) ;
}
întoarcere 0 ;
}


Acest cod preia dimensiunea unui fișier numit C_File.txt folosind stat() metoda din bibliotecă. The st_size element al struct stat, în care funcția păstrează informațiile despre fișier și ne permite să găsim dimensiunea fișierului. Dimensiunea fișierului este păstrată în dimensiunea variabilă și apoi printf() este folosit pentru a imprima dimensiunea pe consolă împreună cu un mesaj. Înainte de a încerca să accesați st_size proprietate, declarația if verifică că stat() apelul funcției a avut succes. Codul returnează apoi 0 pentru a arăta că a rulat cu succes.





Ieșire


2: Folosind funcția fstat().

O altă funcție similară cu stat() este fstat() funcția, care este echivalentă cu stat() dar funcționează pe un fișier deschis în loc de un nume de fișier. The fstat() funcția preia informații despre fișierul deschis descris de descriptor de fișier a trecut la ea. O referință la un fișier deschis este reprezentată de un număr întreg descriptor de fișier . Similar cu stat(), fstat() returnează informațiile de stare despre fișierul furnizat, inclusiv dimensiunea acestuia în octeți.



#include
#include
#include

int principal ( ) {
int fd;
struct stat Sf;
fd = deschis ( „C_File.txt” , O_RDONLY ) ;
dacă ( stat ( fd, & Sf ) == - 1 ) {
printf ( „Eroare la obținerea informațiilor despre fișier. \n ' ) ;
întoarcere 1 ;
}
printf ( „Dimensiunea fișierului este de %ld octeți. \n ' , st.st_size ) ;
închide ( fd ) ;
întoarcere 0 ;
}


În codul de mai sus, fișierul este deschis inițial în acest exemplu apelând la deschis() funcția cu numele fișierului și O_RDONLY opțiunea, care deschide fișierul în modul doar citire. A descriptor de fișier (fd) este returnat de funcție. După aceea, folosim fstat() metoda de a obține informații despre fișier, trimițându-l ca pointer către Sf structura ca al doilea parametru și descriptorul fișierului ca prim argument. The Sf structura este locul în care această funcție păstrează informațiile fișierului după ce îl recuperează.

Dimensiunea fișierului în octeți, care este păstrat în st_size membru al Sf structura, este apoi tipărită dacă nu a existat nicio eroare în timpul utilizării fstat() funcţie. În caz contrar, imprimă un mesaj de eroare.

Ieșire


3: Folosind funcțiile fseek() și ftell().

O altă metodă de a găsi dimensiunea unui fișier în programarea C este să utilizați fseek() și ftell() funcții. The ftell() returnează poziția curentă a indicatorului fișierului, în timp ce funcția fseek() mută pointerul fișierului într-un loc dat din fișier. Mărimea fișierului în octeți poate fi găsită utilizând ftell() funcția de a obține poziția curentă după utilizarea fseek() funcția de relocare a indicatorului de fișier la sfârșitul fișierului.

#include
#include

int principal ( )
{
FIŞIER * fp;
lung mărimea ;

fp = fopen ( „C_File.txt” , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
mărimea = ftell ( fp ) ;
fclose ( fp ) ;
printf ( „Dimensiunea fișierului = %ld octeți. \n ' , mărimea ) ;

întoarcere 0 ;
}


În codul de mai sus, folosind fopen() metoda, aplicația deschide mai întâi C_File.txt în modul binar. The fseek() apoi folosește funcția SEEK_END opțiunea de a muta indicatorul fișierului la sfârșitul fișierului. Locația curentă a fișierului, care corespunde mărimii acestuia în octeți, poate fi găsită folosind ftell() funcţie. Codul folosește apoi fclose() metoda de a închide fișierul după imprimarea dimensiunii fișierului pe consolă.

Ieșire


4: Utilizarea funcției filelength().

Următoarea metodă este utilizarea bibliotecii de gestionare a fișierelor, care oferă multe funcții de manipulare a fișierelor, inclusiv funcții pentru a obține dimensiunea unui fișier . De exemplu, funcția lungimea fisierului() returnează lungimea unui fișier în octeți, dat fiind numele acestuia. Această funcție necesită fișierul antet .

Există și o altă funcție, _filelengthi64(), care returnează lungimea unui fișier în octeți, pentru fișierele mai mari de 4 GB. Diferența dintre cele două funcții este tipul valorilor lor returnate, care arată câți octeți poate gestiona funcția.

#include
#include

int principal ( )
{
lung mărimea ;
char * fname = „C_File.txt” ;
mărimea = lungimea fileului ( număr fișier ( fopen ( fname, 'rb' ) ) ) ;
printf ( „Dimensiunea fișierului = %ld octeți. \n ' , mărimea ) ;

întoarcere 0 ;
}


Dimensiunea fișierului C_File.txt în octeți se obține prin acest cod folosind biblioteca de gestionare a fișierelor Windows. Când este furnizat descriptorul de fișier al unui fișier deschis, metoda lungimea fisierului() returnează lungimea fișierului în octeți.

fopen() deschide fișierul în modul binar numai pentru citire în acest cod și număr fișier() returnează descriptorul de fișier al fișierului deschis. Apoi, printf() este folosit pentru a tipări dimensiunea fișierului. Funcția returnează apoi 0, ceea ce indică faptul că a fost executată cu succes.

Ieșire


Concluzie

Există mai multe metode de a găsi dimensiunea unui fișier în octeți în C , fiecare cu propriile avantaje și dezavantaje. Patru metode diferite sunt discutate în tutorialul de mai sus; stat() funcţie, fstat() funcţie, fseek() și ftell() funcții, iar lungimea fisierului() funcţie. Înțelegerea acestor funcții va ajuta utilizatorii să găsească dimensiunea oricărui fișier de pe sistemul dumneavoastră.