Cara Mencari Saiz Fail dalam Pengaturcaraan C

Cara Mencari Saiz Fail Dalam Pengaturcaraan C



Adakah anda baru dalam pengaturcaraan C dan mencari cara untuk mencari saiz fail? Jangan pergi ke tempat lain! Dalam panduan ini, anda akan mempelajari proses mencari saiz fail dalam pengaturcaraan C. Bilangan bait yang digunakan untuk menyimpan data di dalam fail dirujuk sebagai saiz fail. Dengan mengetahui saiz fail, anda boleh melakukan pelbagai operasi pengendalian fail, termasuk menyalin, membaca atau menulis.

Melalui garis panduan langkah demi langkah yang dinyatakan dalam tutorial ini dan contoh kod mudah, anda boleh mencari saiz mana-mana fail dengan cepat.







Cari Saiz Fail dalam Pengaturcaraan C

Terdapat pelbagai cara untuk mencari saiz fail dalam C yang dinyatakan di bawah.



1: Menggunakan Fungsi stat().

Dalam C, kaedah paling mudah untuk mengetahui saiz fail adalah dengan menggunakan stat() fungsi panggilan sistem. The stat() fungsi mendapatkan semula maklumat status fail dan menyimpannya dalam struct. Salah satu ahli struct ini ialah saiz_st , yang memberikan saiz fail dalam bait. Kaedah ini mengelak daripada memindahkan penuding fail secara manual, menjadikannya lebih mudah digunakan dan kurang terdedah kepada ralat.



#include
#include

int utama ( )
{
struct stat st;
panjang saiz ;
jika ( stat ( 'C_File.txt' , & st ) == 0 )
{
saiz = st.st_size;
printf ( 'Saiz fail ialah %ld bait. \n ' , saiz ) ;
}
kembali 0 ;
}


Kod ini mendapatkan semula saiz fail yang dipanggil C_File.txt menggunakan stat() kaedah daripada perpustakaan. The saiz_st elemen stat struct, di mana fungsi menyimpan maklumat tentang fail, dan membolehkan kami mencari saiz fail. Saiz fail disimpan dalam saiz berubah, dan kemudian printf() digunakan untuk mencetak saiz ke konsol bersama-sama dengan mesej. Sebelum cuba mengakses saiz_st harta, pernyataan if mengesahkan bahawa stat() panggilan fungsi berjaya. Kod itu kemudian mengembalikan 0 untuk menunjukkan bahawa ia berjaya dijalankan.





Pengeluaran


2: Menggunakan Fungsi fstat().

Satu lagi fungsi yang serupa dengan stat() adalah fstat() fungsi, yang bersamaan dengan stat() tetapi berfungsi pada fail terbuka dan bukannya nama fail. The fstat() fungsi mendapatkan semula maklumat tentang fail terbuka yang diterangkan oleh deskriptor fail berlalu kepadanya. Rujukan kepada fail terbuka diwakili oleh integer deskriptor fail . Begitu juga dengan stat(), fstat() mengembalikan maklumat status tentang fail yang disediakan, termasuk saiznya dalam bait.



#include
#include
#include

int utama ( ) {
int fd;
struct stat st;
fd = terbuka ( 'C_File.txt' , O_RDONLY ) ;
jika ( negeri ( fd, & st ) == - 1 ) {
printf ( 'Ralat mendapatkan maklumat fail. \n ' ) ;
kembali 1 ;
}
printf ( 'Saiz fail ialah %ld bait. \n ' , st.st_size ) ;
dekat ( fd ) ;
kembali 0 ;
}


Dalam kod di atas, fail pada mulanya dibuka dalam contoh ini dengan memanggil buka() fungsi dengan nama fail dan O_RDONLY pilihan, yang membuka fail dalam mod baca sahaja. A deskriptor fail (fd) dikembalikan oleh fungsi. Selepas itu, kami menggunakan fstat() kaedah untuk mendapatkan maklumat tentang fail, menghantarnya sebagai penunjuk ke st struktur sebagai parameter kedua dan deskriptor fail sebagai hujah pertama. The st struktur ialah tempat fungsi ini menyimpan maklumat fail selepas mendapatkannya semula.

Saiz fail dalam bait, yang disimpan dalam saiz_st ahli st struktur, kemudian dicetak jika tiada ralat semasa menggunakan fstat() fungsi. Jika tidak, ia mencetak mesej ralat.

Pengeluaran


3: Menggunakan Fungsi fseek() dan ftell().

Satu kaedah lain untuk mencari saiz fail dalam pengaturcaraan C adalah dengan menggunakan fseek() dan ftell() fungsi. The ftell() kaedah mengembalikan kedudukan semasa penuding fail, manakala fungsi fseek() mengalihkan penuding fail ke tempat tertentu dalam fail. Saiz fail dalam bait boleh didapati dengan menggunakan ftell() berfungsi untuk memperoleh kedudukan semasa selepas menggunakan fseek() berfungsi untuk menempatkan semula penuding fail ke hujung fail.

#include
#include

int utama ( )
{
FAIL * fp;
panjang saiz ;

fp = fopen ( 'C_File.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
saiz = ftell ( fp ) ;
tutup ( fp ) ;
printf ( 'Saiz fail = %ld bait. \n ' , saiz ) ;

kembali 0 ;
}


Dalam kod di atas, menggunakan fopen() kaedah, aplikasi mula-mula membuka C_File.txt dalam mod binari. The fseek() fungsi kemudian menggunakan SEEK_END pilihan untuk menempatkan semula penuding fail ke hujung fail. Lokasi semasa fail, yang sepadan dengan saiznya dalam bait, kemudiannya boleh didapati menggunakan fail ftell() fungsi. Kod itu kemudian menggunakan fclose() kaedah untuk menutup fail selepas mencetak saiz fail ke konsol.

Pengeluaran


4: Menggunakan Fungsi panjang fail ().

Kaedah seterusnya adalah dengan menggunakan perpustakaan pengurusan fail, yang menyediakan banyak fungsi manipulasi fail, termasuk fungsi untuk mendapatkan saiz fail . Sebagai contoh, fungsi panjang fail() mengembalikan panjang fail dalam bait, diberikan nama failnya. Fungsi ini memerlukan fail pengepala .

Terdapat juga fungsi lain, _filelengthi64(), yang mengembalikan panjang fail dalam bait, untuk fail yang lebih besar daripada 4 GB. Perbezaan antara kedua-dua fungsi ialah jenis nilai pulangannya, yang menunjukkan bilangan bait yang boleh dikendalikan oleh fungsi itu.

#include
#include

int utama ( )
{
panjang saiz ;
char * fname = 'C_File.txt' ;
saiz = panjang fail ( failno ( fopen ( nama, 'rb' ) ) ) ;
printf ( 'Saiz fail = %ld bait. \n ' , saiz ) ;

kembali 0 ;
}


Saiz fail C_File.txt dalam bait diperolehi oleh kod ini menggunakan perpustakaan pengurusan fail Windows. Apabila diberikan deskriptor fail bagi fail yang dibuka, kaedah panjang fail() mengembalikan panjang fail dalam bait.

fopen() membuka fail dalam mod binari baca sahaja dalam kod ini, dan fileno() mengembalikan deskriptor fail bagi fail yang dibuka. Kemudian, printf() digunakan untuk mencetak saiz fail. Fungsi itu kemudian mengembalikan 0 yang menunjukkan bahawa ia telah berjaya dilaksanakan.

Pengeluaran


Kesimpulan

Terdapat beberapa kaedah untuk mencari saiz fail dalam bait dalam C , masing-masing mempunyai kelebihan dan kekurangan tersendiri. Empat kaedah berbeza dibincangkan dalam tutorial di atas; stat() fungsi, fstat() fungsi, fseek() dan ftell() fungsi, dan panjang fail() fungsi. Memahami fungsi ini akan membantu pengguna mencari saiz mana-mana fail pada sistem anda.