Ste novi v programiranju C in iščete način, kako ugotoviti velikost datoteke? Pojdi nikamor drugam! V tem priročniku se boste naučili postopka iskanja velikosti datoteke v programiranju C. Število bajtov, uporabljenih za shranjevanje podatkov v datoteki, se imenuje velikost datoteke. Če poznate velikost datoteke, lahko izvajate različne operacije ravnanja z datotekami, vključno s kopiranjem, branjem ali pisanjem.
S pomočjo navodil po korakih, omenjenih v tej vadnici, in preprostih primerov kode lahko hitro ugotovite velikost katere koli datoteke.
Poiščite velikost datoteke v programiranju C
Obstajajo različni načini za iskanje velikosti datoteke v C, omenjeni spodaj.
1: Uporaba funkcije stat().
V C je najbolj preprosta metoda za ugotavljanje velikosti datoteke uporaba stat() funkcijo sistemskega klica. The stat() funkcija pridobi informacije o stanju datoteke in jih shrani v strukturo. Eden od članov te strukture je st_velikost , ki podaja velikost datoteke v bajtih. S to metodo se izognete ročnemu premikanju kazalca datoteke, zaradi česar je lažja za uporabo in manj nagnjena k napakam.
#include
#include
int main ( )
{
struct stat st;
dolga velikost ;
če ( stat ( 'C_File.txt' , & st ) == 0 )
{
velikost = st.st_velikost;
printf ( 'Velikost datoteke je %ld bajtov. \n ' , velikost ) ;
}
vrnitev 0 ;
}
Ta koda pridobi velikost klicane datoteke C_File.txt uporabljati stat() metoda iz
Izhod
2: Uporaba funkcije fstat().
Druga funkcija, podobna stat() ali je fstat() funkcijo, ki je enakovredna stat() vendar deluje na odprti datoteki namesto na imenu datoteke. The fstat() funkcija pridobi informacije o odprti datoteki, ki jo opisuje deskriptor datoteke prenesel na to. Sklic na odprto datoteko je predstavljen s celim številom deskriptor datoteke . Podobno kot stat(), fstat() vrne podatke o statusu podane datoteke, vključno z njeno velikostjo v bajtih.
#include
#include
#include
int main ( ) {
int fd;
struct stat st;
fd = odprto ( 'C_File.txt' , SAMO O_RD ) ;
če ( država ( fd, & st ) == - 1 ) {
printf ( »Napaka pri pridobivanju informacij o datoteki. \n ' ) ;
vrnitev 1 ;
}
printf ( 'Velikost datoteke je %ld bajtov. \n ' , st.st_velikost ) ;
blizu ( fd ) ;
vrnitev 0 ;
}
V zgornji kodi se datoteka v tem primeru na začetku odpre s klicem odprto() funkcijo z imenom datoteke in SAMO O_RD možnost, ki odpre datoteko v načinu samo za branje. A deskriptor datoteke (fd) vrne funkcija. Po tem uporabimo fstat() metoda za pridobitev informacij o datoteki, ki jo pošlje kot kazalec na st struktura kot drugi parameter in deskriptor datoteke kot prvi argument. The st struktura je mesto, kjer ta funkcija hrani informacije o datoteki po tem, ko jo pridobi.
Velikost datoteke v bajtih, ki je shranjena v st_velikost član v st strukturo, se nato natisne, če med uporabo ni prišlo do napake fstat() funkcijo. V nasprotnem primeru natisne sporočilo o napaki.
Izhod
3: Uporaba funkcij fseek() in ftell().
Druga metoda za iskanje velikosti datoteke v programiranju C je uporaba fseek() in ftell() funkcije. The ftell() metoda vrne trenutni položaj kazalca datoteke, medtem ko funkcija fseek() premakne kazalec datoteke na dano mesto v datoteki. Velikost datoteke v bajtih lahko najdete z uporabo ftell() funkcijo za pridobitev trenutnega položaja po uporabi fseek() funkcijo za premestitev kazalca datoteke na konec datoteke.
#include#include
int main ( )
{
MAPA * fp;
dolga velikost ;
fp = fopen ( 'C_File.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
velikost = povej ( fp ) ;
fclose ( fp ) ;
printf ( 'Velikost datoteke = %ld bajtov. \n ' , velikost ) ;
vrnitev 0 ;
}
V zgornji kodi z uporabo fopen() način, aplikacija najprej odpre C_File.txt v binarnem načinu. The fseek() funkcija nato uporabi SEEK_END možnost prestavitve kazalca datoteke na konec datoteke. Trenutno lokacijo datoteke, ki ustreza njeni velikosti v bajtih, lahko nato najdete z uporabo ftell() funkcijo. Koda nato uporabi fclose() način za zapiranje datoteke po tiskanju velikosti datoteke na konzolo.
Izhod
4: Uporaba funkcije filelength().
Naslednja metoda je uporaba knjižnice za upravljanje datotek, ki ponuja številne funkcije za upravljanje datotek, vključno s funkcijami za pridobivanje velikost datoteke . Na primer funkcija dolžina datoteke () vrne dolžino datoteke v bajtih glede na njeno ime datoteke. Ta funkcija zahteva datoteko glave
Obstaja tudi druga funkcija, _filelengthi64(), ki vrne dolžino datoteke v bajtih za datoteke, večje od 4 GB. Razlika med obema funkcijama je vrsta njunih vrnjenih vrednosti, ki prikazuje, koliko bajtov lahko obravnava funkcija.
#include#include
int main ( )
{
dolga velikost ;
char * fname = 'C_File.txt' ;
velikost = dolžina datoteke ( fileno ( fopen ( fname, 'rb' ) ) ) ;
printf ( 'Velikost datoteke = %ld bajtov. \n ' , velikost ) ;
vrnitev 0 ;
}
Velikost datoteke C_File.txt v bajtih se pridobi s to kodo z uporabo knjižnice za upravljanje datotek Windows. Ko je na voljo deskriptor odprte datoteke, metoda dolžina datoteke () vrne dolžino datoteke v bajtih.
fopen() odpre datoteko v binarnem načinu samo za branje v tej kodi in fileno() vrne datotečni deskriptor odprte datoteke. potem, printf() se uporablja za tiskanje velikosti datoteke. Funkcija nato vrne 0, kar pomeni, da je bila uspešno izvedena.
Izhod
Zaključek
Obstaja več načinov za iskanje velikost datoteke v bajtih v C , vsak s svojimi prednostmi in slabostmi. V zgornji vadnici so obravnavane štiri različne metode; stat() funkcija, fstat() funkcija, fseek() in ftell() funkcije in dolžina datoteke () funkcijo. Razumevanje teh funkcij bo uporabnikom pomagalo najti velikost katere koli datoteke v vašem sistemu.