C Programlamasında Bir Dosyanın Boyutu Nasıl Bulunur?

C Programlamasinda Bir Dosyanin Boyutu Nasil Bulunur



C programlamasında yeni misiniz ve bir dosyanın boyutunu bulmanın bir yolunu mu arıyorsunuz? Başka hiçbir yere gitme! Bu kılavuzda, C programlamada bir dosyanın boyutunu bulma sürecini öğreneceksiniz. Verileri bir dosya içinde tutmak için kullanılan bayt sayısına dosyanın boyutu denir. Dosya boyutunu bilerek kopyalama, okuma veya yazma gibi çeşitli dosya işleme işlemlerini gerçekleştirebilirsiniz.

Bu eğitimde bahsedilen adım adım yönergeler ve basit kod örnekleri sayesinde, herhangi bir dosyanın boyutunu hızlı bir şekilde bulabilirsiniz.







C Programlamada Bir Dosyanın Boyutunu Bulma

Aşağıda belirtilen C'de bir dosyanın boyutunu bulmanın farklı yolları vardır.



1: stat() İşlevini Kullanma

C'de, bir dosyanın boyutunu bulmanın en basit yöntemi, istatistik () sistem çağrısı işlevi. bu istatistik () işlev, dosya durum bilgilerini alır ve bir yapı içinde saklar. Bu yapının üyelerinden biri st_size , dosyanın boyutunu bayt cinsinden verir. Bu yöntem, dosya işaretçisini manuel olarak taşıma zorunluluğunu ortadan kaldırarak kullanımını kolaylaştırır ve hataya daha az eğilimli hale getirir.



#include
#include

int ana ( )
{
yapı statü st;
uzun boyut ;
eğer ( statü ( 'C_Dosya.txt' , & st ) == 0 )
{
boyut = st.st_size;
printf ( 'Dosyanın boyutu %ld bayt. \N ' , boyut ) ;
}
geri dönmek 0 ;
}


Bu kod, adlı bir dosyanın boyutunu alır. C_Dosya.txt kullanmak istatistik () gelen yöntem kütüphane. bu st_size işlevin dosya hakkındaki bilgileri tuttuğu ve dosya boyutunu bulmamızı sağlayan struct stat öğesinin öğesi. Dosyanın boyutu, değişken boyutta tutulur ve ardından printf() boyutu bir mesajla birlikte konsola yazdırmak için kullanılır. erişmeye çalışmadan önce st_size özelliği, if ifadesi şu özelliği doğrular: istatistik () işlev çağrısı başarılı oldu. Ardından kod, başarıyla çalıştığını göstermek için 0 değerini döndürür.





Çıktı


2: fstat() İşlevini Kullanma

Buna benzer başka bir işlev istatistik () bu fstat() eşdeğer olan fonksiyon istatistik () ancak dosya adı yerine açık bir dosya üzerinde çalışır. bu fstat() tarafından açıklanan açık dosya hakkında bilgi alır. dosya tanımlayıcı ona geçti. Açık bir dosyaya yapılan başvuru, tamsayı ile temsil edilir. dosya tanımlayıcı . Benzer şekilde istatistik (), fstat() sağlanan dosyanın bayt cinsinden boyutu da dahil olmak üzere durum bilgilerini döndürür.



#include
#include
#include

int ana ( ) {
int fd;
yapı statü st;
fd = açık ( 'C_Dosya.txt' , O_RDYALNIZCA ) ;
eğer ( durum ( fd, & st ) == - 1 ) {
printf ( 'Dosya bilgileri alınırken hata oluştu. \N ' ) ;
geri dönmek 1 ;
}
printf ( 'Dosyanın boyutu %ld bayt. \N ' st.st_size ) ;
kapalı ( fd ) ;
geri dönmek 0 ;
}


Yukarıdaki kodda, dosya ilk olarak bu örnekte çağrılarak açılır. açık() dosya adı ile işlev ve SADECE O_RD dosyayı salt okunur modda açan seçenek. A dosya tanımlayıcı (fd) fonksiyon tarafından döndürülür. Bundan sonra, kullandığımız fstat() dosya hakkında bilgi edinme yöntemi, onu bir işaretçi olarak göndererek st yapı ikinci parametre olarak ve dosya tanıtıcısı ilk argüman olarak. bu st yapı, bu işlevin dosyanın bilgilerini aldıktan sonra tuttuğu yerdir.

Dosyanın içinde tutulan bayt cinsinden boyutu st_size üyesi st yapısı kullanılırken herhangi bir hata yoksa yazdırılır fstat() işlev. Aksi takdirde, bir hata mesajı yazdırır.

Çıktı


3: fseek() ve ftell() İşlevlerini Kullanma

C programlamasında bir dosyanın boyutunu bulmanın diğer bir yöntemi de fseek() Ve ftell() fonksiyonlar. bu ftell() yöntemi, dosya işaretçisinin geçerli konumunu döndürürken fseek() işlevi, dosya işaretçisini dosyada belirli bir yere taşır. Dosyanın bayt cinsinden boyutu, kullanılarak bulunabilir. ftell() kullandıktan sonra geçerli konumu elde etme işlevi fseek() dosya işaretçisini dosyanın sonuna taşımak için işlev.

#include
#include

int ana ( )
{
DOSYA * fp;
uzun boyut ;

fp = açık ( 'C_Dosya.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
boyut = ftell ( sf ) ;
kapat ( sf ) ;
printf ( 'Dosyanın boyutu = %ld bayt. \N ' , boyut ) ;

geri dönmek 0 ;
}


Yukarıdaki kodda, kullanarak açık() yöntemi, uygulama önce açar C_Dosya.txt ikili modda. bu fseek() işlevi daha sonra kullanır SEEK_END dosya işaretçisini dosyanın sonuna taşıma seçeneği. Dosyanın bayt cinsinden boyutuna karşılık gelen mevcut konumu, daha sonra kullanılarak bulunabilir. ftell() işlev. Kod daha sonra şunu kullanır: fclose() dosyanın boyutunu konsola yazdırdıktan sonra dosyayı kapatma yöntemi.

Çıktı


4: filelength() İşlevini Kullanma

Bir sonraki yöntem, elde edilecek işlevler de dahil olmak üzere birçok dosya işleme işlevi sağlayan dosya yönetimi kitaplığını kullanmaktır. bir dosyanın boyutu . Örneğin, işlev dosya uzunluğu() dosya adı verilen bir dosyanın uzunluğunu bayt cinsinden döndürür. Bu işlev, başlık dosyasını gerektirir .

Başka bir işlev daha var, _filelengthi64(), 4 GB'tan büyük dosyalar için bir dosyanın uzunluğunu bayt cinsinden döndürür. İki işlev arasındaki fark, işlevin kaç baytı işleyebileceğini gösteren dönüş değerlerinin türüdür.

#include
#include

int ana ( )
{
uzun boyut ;
karakter * isim = 'C_Dosya.txt' ;
boyut = dosya uzunluğu ( dosya yok ( açık ( isim, 'rb' ) ) ) ;
printf ( 'Dosyanın boyutu = %ld bayt. \N ' , boyut ) ;

geri dönmek 0 ;
}


dosyanın boyutu C_Dosya.txt bayt cinsinden, Windows dosya yönetimi kitaplığı kullanılarak bu kod tarafından elde edilir. Açık bir dosyanın dosya tanıtıcısı sağlandığında, yöntem dosya uzunluğu() dosyanın uzunluğunu bayt cinsinden döndürür.

açık() dosyayı bu kodda salt okunur ikili modda açar ve dosya yok() açılan dosyanın dosya tanıtıcısını döndürür. Daha sonra, printf() dosya boyutunu yazdırmak için kullanılır. İşlev daha sonra başarıyla yürütüldüğünü gösteren 0 değerini döndürür.

Çıktı


Çözüm

bulmak için birkaç yöntem vardır. C'de bayt cinsinden bir dosyanın boyutu , her birinin kendi avantajları ve dezavantajları vardır. Yukarıdaki eğitimde dört farklı yöntem ele alınmıştır; istatistik () işlev, fstat() işlev, fseek() Ve ftell() fonksiyonlar ve dosya uzunluğu() işlev. Bu işlevleri anlamak, kullanıcıların sisteminizdeki herhangi bir dosyanın boyutunu bulmasına yardımcı olacaktır.