Çözüldü C dosya boyutu bulmak

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

soon

Hectopat
Katılım
16 Şubat 2021
Mesajlar
581
Çözümler
3
Merhaba.

Sorum şu, neden bu iki kod aynı işi yapmıyor? while ile olanda eksik nedir?

C:
int size=0;
fseek(filep,0,SEEK_END);
        size=ftell(filep);
C:
int size=0;
while(!feof(filep))
        size++;
 
Son düzenleme:
Çözüm
Dosyayı "read" modunda açıyorum zaten, curve dosyanın ilk sütununu işaret ediyor. Aynı şeyi yapmıyor mu?

Dosyayı açtıktan sonra okuma işlemi yapmadığınız ya da fseek ve fsetpos gibi fonksiyonlar ile spesifik bir pozisyona getirmediğiniz sürece oluşturulan dosya handle'ı dosya başlangıç pozisyonunu işaret eder.

Şöyle anlatıyım;

FILE* fp = fopen("file", "r");

şeklinde bir handle oluşturulduğunda bu dosyanın mevcut pozisyonu 0 yani başlangıç pozisyonudur. Bunu ilerletmek için;

fseek(fp, 0, new_pos);

şeklinde yeni bir pozisyona ilerletebilirsiniz ya da;

int c = fgetc(fp);

ile dosya'dan 1 karakter değer okutup yeni pozisyonu +1'e taşıyabilirsiniz.


Yani bu mantıkla, aşağıdaki şekilde yazarak istediğiniz amaca uygun yapabilirsiniz;

int size = 0; while (!feof(fp)) { fgetc(fp); size++; }
Dosyayı "read" modunda açıyorum zaten, curve dosyanın ilk sütununu işaret ediyor. Aynı şeyi yapmıyor mu?

Dosyayı açtıktan sonra okuma işlemi yapmadığınız ya da fseek ve fsetpos gibi fonksiyonlar ile spesifik bir pozisyona getirmediğiniz sürece oluşturulan dosya handle'ı dosya başlangıç pozisyonunu işaret eder.

Şöyle anlatıyım;

FILE* fp = fopen("file", "r");

şeklinde bir handle oluşturulduğunda bu dosyanın mevcut pozisyonu 0 yani başlangıç pozisyonudur. Bunu ilerletmek için;

fseek(fp, 0, new_pos);

şeklinde yeni bir pozisyona ilerletebilirsiniz ya da;

int c = fgetc(fp);

ile dosya'dan 1 karakter değer okutup yeni pozisyonu +1'e taşıyabilirsiniz.


Yani bu mantıkla, aşağıdaki şekilde yazarak istediğiniz amaca uygun yapabilirsiniz;

int size = 0; while (!feof(fp)) { fgetc(fp); size++; }
 
Çözüm
Dosyayı açtıktan sonra okuma işlemi yapmadığınız ya da fseek ve fsetpos gibi fonksiyonlar ile spesifik bir pozisyona getirmediğiniz sürece oluşturulan dosya Handle'ı dosya başlangıç pozisyonunu işaret eder.

Şöyle anlatayım;

FILE* fp = fopen("file", "r");

Şeklinde bir handle oluşturulduğunda bu dosyanın mevcut pozisyonu 0 yani başlangıç pozisyonudur. Bunu ilerletmek için;

fseek(fp, 0, new_pos);

Şeklinde yeni bir pozisyona ilerletebilirsiniz ya da;

int c = fgetc(fp);

İle Dosya'dan 1 karakter değer okutup yeni pozisyonu +1'e taşıyabilirsiniz.

Yani bu mantıkla, aşağıdaki şekilde yazarak istediğiniz amaca uygun yapabilirsiniz;

int size = 0; while (!feof(fp)) { fgetc(fp); size++; }

Net olarak anladım, teşekkür ederim hocam.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı