#include <stdio. h> #include <stdlib. h> struct yapi ; typedef struct yapi abc; int main { FILE cptr = 0; abc musteri = ; if( ( cptr = fopen ) NULL ) else { printf("%-10s%-11s%-11s%-6s\n", "Hesap No", "Soyisim", "Isim", "Bakiye"); while( ! feof ) { if (fread(&musteri, sizeof , 1, cptr) != 1) if (musteri. bakiye!= 0) } fclose ; } return 0; } Olaylara karışmayın!

Hocam veri bittiği zaman bir daha fread çağırdığın zaman dosyanın sonuna geldiğini anlıyorsun. İlk veriyi while a girmeden okursan sorun kalmayacaktır diye düşünüyorum yanılıyorsam düzeltin lütfen kodu da ekliyorum. #include <stdio. h> #include <stdlib. h> struct yapi ; typedef struct yapi abc; int main { FILE cptr; abc musteri= ; if((cptr=fopen NULL) printf ; else { printf("%-10s%-11s%-11s%-6s\n","Hesap No","Soyisim","Isim","Bakiye"); fread(&musteri, sizeof ,1, cptr); while(! feof fclose ; } return 0; } OnLyGoDCaNStoPMe tarafından 18/Mar/13 14:09 tarihinde düzenlenmiştir

http://faq.cprogramming.com/cgi-bin/smartfaq. cgi?id=1043284351&answer=1046476070 adresinde bu gibi durumlarda dosya sonunu ğrenmek için neden feof kullanmamamız gerektiği yazıyor. Biraz daha düzeltilmiş bir rnek: #include <stdio. h> #include <stdlib. h> struct yapi ; typedef struct yapi abc; int main { FILE cptr = 0; abc musteri = ; //veri olusturma if( ( cptr = fopen ) NULL ) int t = 0; for(; t < 100; ++t) { musteri. hesapno = t+1; int f = 0; for ( ; f < 9; ++f) musteri. soyisim = '\0'; musteri. isim = '\0'; musteri. bakiye = (t+1) t / 6.75; fwrite (&musteri, sizeof , 1, cptr ); } fclose ; cptr = NULL; //veri olusturma bitti //veri okuma if( ( cptr = fopen ) NULL ) printf("%-10s%-11s%-11s%-6s\n", "Hesap No", "Soyisim", "Isim", "Bakiye"); while( fread(&musteri, sizeof , 1, cptr) ) { //if (musteri. bakiye > 10 && musteri. bakiye < 2500) } fclose ; //veri okuma bitti system ; return 0; } YeniHarman tarafından 18/Mar/13 01:47 tarihinde düzenlenmiştir Olaylara karışmayın!

Nedenini anlayamadım mesela sıradan erişimli bir dosya için... fscanf(fptr,"%d%d%d",&deg1,&deg2,&deg3); while (! feof ... türünden olunca son veriyi iki kez almıyor ama ilk veriyi dışaarda almazsak yani while içinde okur yazarsak sonuncu veriyi 2 kere ekrana basıyor peki NEDEN NEDEN NEDEN bunu yapıyor. Resmen saatlerdir bunu soruyorum ve ğrenemedim bu hızla zor biter bu C :( https://www.youtube.com/watch?v=WC3-71NKwPw

Dosyadaki son veriyi iki kere ekrana yazdırıyor burada dosya işaretçisi ile ilgili bilmediğim bir şey var sanırım sizce neden 2 kere okuyor? #include <stdio. h> #include <stdlib. h> struct yapi ; typedef struct yapi abc; int main { FILE cptr; abc musteri= ; if((cptr=fopen NULL) printf ; else { printf("%-10s%-11s%-11s%-6s\n","Hesap No","Soyisim","Isim","Bakiye"); while(! feof fclose ; } return 0; } https://www.youtube.com/watch?v=WC3-71NKwPw