Paano Hanapin ang Sukat ng isang File sa C Programming

Paano Hanapin Ang Sukat Ng Isang File Sa C Programming



Bago ka ba sa C programming at naghahanap ng paraan upang mahanap ang laki ng isang file? Huwag kang pumunta sa ibang lugar! Sa gabay na ito, matututunan mo ang proseso ng paghahanap ng laki ng isang file sa C programming. Ang bilang ng mga byte na ginamit para hawakan ang data sa loob ng isang file ay tinutukoy bilang laki ng file. Sa pamamagitan ng pag-alam sa laki ng file, maaari kang magsagawa ng iba't ibang mga operasyon sa paghawak ng file, kabilang ang pagkopya, pagbabasa, o pagsusulat.

Sa pamamagitan ng sunud-sunod na mga alituntunin na binanggit sa tutorial na ito at mga simpleng halimbawa ng code, mabilis mong mahahanap ang laki ng anumang file.







Hanapin ang Sukat ng File sa C Programming

Mayroong iba't ibang mga paraan upang mahanap ang laki ng isang file sa C na binanggit sa ibaba.



1: Paggamit ng stat() Function

Sa C, ang pinakasimpleng paraan ng pag-alam sa laki ng isang file ay ang paggamit ng stat() function ng system call. Ang stat() Kinukuha ng function ang impormasyon sa katayuan ng file at iniimbak ito sa isang struct. Ang isa sa mga miyembro ng struct na ito ay st_size , na nagbibigay ng laki ng file sa bytes. Iniiwasan ng pamamaraang ito na manu-manong ilipat ang pointer ng file, na ginagawang mas madaling gamitin at mas madaling magkaroon ng error.



#include
#include

int pangunahing ( )
{
struct stat st;
mahaba laki ;
kung ( stat ( 'C_File.txt' , at st ) == 0 )
{
laki = st.st_size;
printf ( 'Ang laki ng file ay %ld bytes. \n ' , laki ) ;
}
bumalik 0 ;
}


Kinukuha ng code na ito ang laki ng tinatawag na file C_File.txt gamit ang stat() pamamaraan mula sa aklatan. Ang st_size elemento ng struct stat, kung saan pinapanatili ng function ang impormasyon tungkol sa file, at pinapayagan kaming mahanap ang laki ng file. Ang laki ng file ay pinananatili sa variable na laki, at pagkatapos printf() ay ginagamit upang i-print ang laki sa console kasama ng isang mensahe. Bago subukang i-access ang st_size ari-arian, ang kung ang pahayag ay nagpapatunay na ang stat() matagumpay ang function call. Ang code ay nagbabalik ng 0 upang ipakita na matagumpay itong tumakbo.





Output


2: Paggamit ng fstat() Function

Isa pang function na katulad ng stat() ay ang fstat() function, na katumbas ng stat() ngunit gumagana sa isang bukas na file sa halip na isang filename. Ang fstat() function na kumukuha ng impormasyon tungkol sa bukas na file na inilarawan ng deskriptor ng file ipinasa dito. Ang isang reference sa isang bukas na file ay kinakatawan ng integer deskriptor ng file . Katulad ng stat(), fstat() ibinabalik ang impormasyon ng katayuan tungkol sa ibinigay na file, kasama ang laki nito sa mga byte.



#include
#include
#include

int pangunahing ( ) {
int fd;
struct stat st;
fd = bukas ( 'C_File.txt' , O_RDONLY ) ;
kung ( estado ( fd, at st ) == - 1 ) {
printf ( 'Error sa pagkuha ng impormasyon ng file. \n ' ) ;
bumalik 1 ;
}
printf ( 'Ang laki ng file ay %ld bytes. \n ' , st.st_size ) ;
malapit na ( fd ) ;
bumalik 0 ;
}


Sa code sa itaas, ang file ay unang binuksan sa halimbawang ito sa pamamagitan ng pagtawag sa bukas() function na may filename at ang O_RDONLY opsyon, na nagbubukas ng file sa read-only na mode. A deskriptor ng file (fd) ay ibinalik ng function. Pagkatapos nito, ginagamit namin ang fstat() paraan upang makakuha ng impormasyon tungkol sa file, ipinapadala ito bilang isang pointer sa st istraktura bilang pangalawang parameter at ang deskriptor ng file bilang unang argumento. Ang st Ang istraktura ay kung saan pinapanatili ng function na ito ang impormasyon ng file pagkatapos makuha ito.

Ang laki ng file sa bytes, na pinananatili sa st_size miyembro ng st istraktura, pagkatapos ay naka-print kung walang error habang ginagamit ang fstat() function. Kung hindi, nagpi-print ito ng mensahe ng error.

Output


3: Paggamit ng fseek() at ftell() Function

Ang isa pang paraan upang mahanap ang laki ng isang file sa C programming ay ang paggamit ng fseek() at ftell() mga function. Ang ftell() Ibinabalik ng method ang kasalukuyang posisyon ng file pointer, samantalang ang fseek() function ay naglilipat ng file pointer sa isang partikular na lugar sa file. Ang laki ng file sa bytes ay maaaring matagpuan sa pamamagitan ng paggamit ng ftell() function upang makuha ang kasalukuyang posisyon pagkatapos gamitin ang fseek() function na upang ilipat ang pointer ng file sa dulo ng file.

#include
#include

int pangunahing ( )
{
FILE * fp;
mahaba laki ;

fp = fopen ( 'C_File.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
laki = ftell ( fp ) ;
fclose ( fp ) ;
printf ( 'Ang laki ng file = %ld bytes. \n ' , laki ) ;

bumalik 0 ;
}


Sa code sa itaas, gamit ang fopen() paraan, unang bubuksan ng application ang C_File.txt sa binary mode. Ang fseek() function pagkatapos ay gumagamit ng SEEK_END opsyon upang ilipat ang pointer ng file sa dulo ng file. Ang kasalukuyang lokasyon ng file, na tumutugma sa laki nito sa mga byte, ay maaaring matagpuan gamit ang ftell() function. Pagkatapos ay ginagamit ng code ang fclose() paraan upang isara ang file pagkatapos i-print ang laki ng file sa console.

Output


4: Paggamit ng filelength() Function

Ang susunod na paraan ay sa pamamagitan ng paggamit ng file management library, na nagbibigay ng maraming function sa pagmamanipula ng file, kabilang ang mga function na makukuha ang laki ng isang file . Halimbawa, ang function haba ng file() ibinabalik ang haba ng isang file sa bytes, na ibinigay sa filename nito. Ang function na ito ay nangangailangan ng header file .

Mayroon ding isa pang function, _filelengthi64(), na ibinabalik ang haba ng isang file sa bytes, para sa mga file na mas malaki sa 4 GB. Ang pagkakaiba sa pagitan ng dalawang function ay ang uri ng kanilang mga return value, na nagpapakita kung gaano karaming mga byte ang kayang hawakan ng function.

#include
#isama ang

int pangunahing ( )
{
mahaba laki ;
char * fname = 'C_File.txt' ;
laki = haba ng file ( fileno ( fopen ( fname, 'rb' ) ) ) ;
printf ( 'Ang laki ng file = %ld bytes. \n ' , laki ) ;

bumalik 0 ;
}


Ang laki ng file C_File.txt sa bytes ay nakuha ng code na ito gamit ang Windows file management library. Kapag ibinigay ang file descriptor ng isang binuksan na file, ang pamamaraan haba ng file() ibinabalik ang haba ng file sa bytes.

fopen() binubuksan ang file sa read-only na binary mode sa code na ito, at fileno() ibinabalik ang file descriptor ng binuksan na file. pagkatapos, printf() ay ginagamit upang i-print ang laki ng file. Ang function pagkatapos ay nagbabalik ng 0 na nagpapahiwatig na ito ay matagumpay na naisakatuparan.

Output


Konklusyon

Mayroong ilang mga paraan upang mahanap ang laki ng isang file sa bytes sa C , bawat isa ay may sariling mga pakinabang at disadvantages. Apat na magkakaibang pamamaraan ang tinalakay sa tutorial sa itaas; stat() function, fstat() function, fseek() at ftell() function, at ang haba ng file() function. Ang pag-unawa sa mga function na ito ay makakatulong sa mga user na mahanap ang laki ng anumang file sa iyong system.