Yazar |
|
kartane
istanbul
Kayıt: 22.02.2007 |
|
while(!feof(dosya))
{
fscanf(dosya,......);
kayit++;
}
niye son kayidi iki kere okuyo,
if(feof(dosya))
break;
yazdım fscanf sonra ama yıne aynı okuyo ???yazmada da aynı durum gecerli
|
|
Yazar |
|
naranja
Kraliyet Ailesinden
Kayıt: 18.10.2007 |
|
kartane yazdi | while(!feof(dosya))
{
fscanf(dosya,......);
kayit++;
}
niye son kayidi iki kere okuyo,
if(feof(dosya))
break;
yazdım fscanf sonra ama yıne aynı okuyo ???yazmada da aynı durum gecerli |
aynı sorunu ben de yaşıyorum, şimdi kayıt yaparken kaydın sonuna "slash n"
koyduğun için txt dosyasının en altına bi boşluk koyuyor, sonra okuturken de dosya sonu son kayıt ta değil de boşlukta bittiği için son kaydı bi kez daha okuyor.
Kaybolur hayatIn tarifsiz ahengi;
Zaman bir tablodur düser duvarlardan.
|
|
Yazar |
|
kartane
istanbul
Kayıt: 22.02.2007 |
|
Cozum ne olabilir acaba???
|
|
Yazar |
|
naranja
Kraliyet Ailesinden
Kayıt: 18.10.2007 |
|
ben de çok merak ediyorum nasıl olabilir acaba?
Kaybolur hayatIn tarifsiz ahengi;
Zaman bir tablodur düser duvarlardan.
|
|
Yazar |
|
marakana
Kayıt: 08.03.2007 |
|
Kayıtları ekleyince mesela; kayıt arada son kaydı aradığımda ekrana 2 defa yazıyodu.bende kayıt aramada dosyayı okurken
while(!feof(dosya))
{
fscanf(dosya,......);
böyle yazdım ve sorun cözüldü.bu sorunu yasadığım tüm fonksiyonlarda aynı sekilde fscanf in altına bunu yazdım.Sizde niye işe yaramıyor anlamadım
|
|
Yazar |
|
naranja
Kraliyet Ailesinden
Kayıt: 18.10.2007 |
|
marakana yazdi | Kayıtları ekleyince mesela; kayıt arada son kaydı aradığımda ekrana 2 defa yazıyodu.bende kayıt aramada dosyayı okurken
while(!feof(dosya))
{
fscanf(dosya,......);
böyle yazdım ve sorun cözüldü.bu sorunu yasadığım tüm fonksiyonlarda aynı sekilde fscanf in altına bunu yazdım.Sizde niye işe yaramıyor anlamadım |
iyi hoş diyosun da, şimdi 1 kayıt olduğunu düşün, fscanf kaydı okuyor ve dosya sonu geliyor daha fscanf le okuttuğun değerleri bi yere atmadan döngü sonlanıyor, yani son kayıt boşuna okutulmuş oluyor.
Kaybolur hayatIn tarifsiz ahengi;
Zaman bir tablodur düser duvarlardan.
|
|
Yazar |
|
marakana
Kayıt: 08.03.2007 |
|
naranja yazdi
| iyi hoş diyosun da, şimdi 1 kayıt olduğunu düşün, fscanf kaydı okuyor ve dosya sonu geliyor daha fscanf le okuttuğun değerleri bi yere atmadan döngü sonlanıyor, yani son kayıt boşuna okutulmuş oluyor. |
walla haklısın ama sacmada olsa derdime care buldum napim bu feof'un dosya sonu anlayışı bizle uyuşmuyor bence
Bu konuyu daha öncede tartışmışız ve arkadasımız söyle bir çözüm önermiş:
hamdikan yazdi
while(1)
{
int abc=fgetc(dosya);
if(abc==EOF)
{
break;
}
fread(&ogr,sizeof(struct ogrenci),1,dosya);
kayitSayisi++;
}
bide bunu dene istersen
|
|
Yazar |
|
neurorebel
Kayıt: 15.08.2007 |
|
yukarıdaki kodda bir sorun oluşabilir sanırım (yanılıyorsam aydınlatın:) ) eğer fgetc() ile aldığımız karakter EOF değilse o an okumakta olduğumuz struct verisine ait olacak. bu durumda takip eden okumalarda veriler bir byte kaymış olmayacak mı ?
edit:
son kaydı 2 kez okuma sorununu fread() ve fscanf() fonksiyonlarının dönüş degerlerini kontrol ederek çözebilirsiniz:
örn:
....
while(!feof(dosya))
{
if (fread(...)) // ya da if(fscanf(...))
{
// veriyi isle(struct olustur diziye at vs.)
}
}
Do weird and difficult things.
|
|
Yazar |
|
kartane
istanbul
Kayıt: 22.02.2007 |
|
neurorebel yazdi | yukarıdaki kodda bir sorun oluşabilir sanırım (yanılıyorsam aydınlatın:) ) eğer fgetc() ile aldığımız karakter EOF değilse o an okumakta olduğumuz struct verisine ait olacak. bu durumda takip eden okumalarda veriler bir byte kaymış olmayacak mı ? |
Haklısın denedim zaten olmadı,yok mu bunu çözümü???
|
|
Yazar |
|
neurorebel
Kayıt: 15.08.2007 |
|
edit yaptım cevaba bir de onu dene istersen
Do weird and difficult things.
|
|
Yazar |
|
sinan61
TRABZON
Kayıt: 05.12.2006 |
|
naranja yazdi | kartane yazdi | while(!feof(dosya))
{
fscanf(dosya,......);
kayit++;
}
niye son kayidi iki kere okuyo,
if(feof(dosya))
break;
yazdım fscanf sonra ama yıne aynı okuyo ???yazmada da aynı durum gecerli |
aynı sorunu ben de yaşıyorum, şimdi kayıt yaparken kaydın sonuna "slash n"
koyduğun için txt dosyasının en altına bi boşluk koyuyor, sonra okuturken de dosya sonu son kayıt ta değil de boşlukta bittiği için son kaydı bi kez daha okuyor. |
kaydederken slash n i sona değil başa koy sorunun çözülür..yani ilk satır boş olsun!
Nobody live like me!!!
|
|
Yazar |
|
kartane
istanbul
Kayıt: 22.02.2007 |
|
burda if'in içindeki fscanf neye esitleyecem???
|
|
Yazar |
|
kartane
istanbul
Kayıt: 22.02.2007 |
|
sinan61 yazdi | naranja yazdi | kartane yazdi | while(!feof(dosya))
{
fscanf(dosya,......);
kayit++;
}
niye son kayidi iki kere okuyo,
if(feof(dosya))
break;
yazdım fscanf sonra ama yıne aynı okuyo ???yazmada da aynı durum gecerli |
aynı sorunu ben de yaşıyorum, şimdi kayıt yaparken kaydın sonuna "slash n"
koyduğun için txt dosyasının en altına bi boşluk koyuyor, sonra okuturken de dosya sonu son kayıt ta değil de boşlukta bittiği için son kaydı bi kez daha okuyor. |
kaydederken slash n i sona değil başa koy sorunun çözülür..yani ilk satır boş olsun! |
bu fprintfde de gecerli bu seferde son kaydı iki kere yazıyo,okumayı oyle hallettimde....
|
|
Yazar |
|
cengineer
Kayıt: 27.10.2006 |
|
extreme yazdi | 2. Ödev biraz daha görsel ve biraz daha algoritma ağırlıklı olsa yada 2-3 kişi gruplu ve biraz daha zor olsa daha güzel olur. |
Zaten dürtmeyle yürüyoruz basit ödevleri dahi son güne bırakıyoruz zor olursa daha erken başlayıp uğraşırız .Ayrıca batak a alternatif bi proje istiyoruz mümkünse
" Her arayan bulamayabilir ancak bulanlar arayanlardir..! " Imam-i Rabbâni
|
|
Yazar |
|
neurorebel
Kayıt: 15.08.2007 |
|
kartane yazdi | burda if'in içindeki fscanf neye esitleyecem??? |
birşeyle karşılaştırmana gerek yok (== kastediyorsun sanırım :) )
edit:
yine olmazsa
if (fread(..) > 0){...}
ya da
if (fscanf(..) > 0){..}
dene
Do weird and difficult things.
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | | | | | |