Arkadaşlar EOF(end of file) diye bir sabite rasladım-sanırım -1'e denk geliyor- kitapta while((a=getchar())!=EOF) şeklinde kullanmış ve dizinin sonunda bu degeri döndürür demiş... Ama döngü hiç bitmiyor-acaba klavyede -1 değerince gelen bi tuş felanmı var....çünkü girdigim hiçbir deger döngüyü bitirmedi... Bi El Atarsanız Sevinirim...
arkadaşım anladığım kadarı ile bu klavye ile girebiliceğin bir değer değil. örneğin veritabanı işlemlerinde next record yaptığımızda eğer tabloda kayıt bitmişse bize record not found gibi bir hata verir. bunu önlemek için null sorgulaması yapılır ve eğer null=true sonucu gelirse bizde kaydın bittiğini ve son kayıtta olduğumuzu anlarız. tahminim serinin bittiğini anlatan bir durum bu da. Yani EOF = -1 ise dizi son bulmuştur gibi
mesele ben bu diziyi nasıl bitiriceğimi bilmiyorum.... yani kendiliginden sonlanmıyor...
getchar() fonksiyonu klavyaden BİR karakter okur ve satır başı karakteri bekler, ardından basılan tuşu int olarak alt byte'da döndürür.Yukarıda vermiş olduğun koda klavyeden EOF değeri giremezsin.Çünkü EOF dediğiniz gibi -1 INT bir değerdir.Klavyeden bu değer girmeye çalıştığınızda iki karakter girmiş olursunuz ve getchar() fonksiyonu geriye 49 değil(1), 45 (-) değeri döner.Yani yukarıdaki kod hiçbir zaman sonlanmaz.Çünkü girilen karakter hiçbir zaman EOF olmaz.Zaten EOF makrosu böyle bir yerde de kullanıması bana göre saçma.Yani uzun lafın kısası o kod bir sonsuz döngüdür kardeşim.Ama başka bir yerde şöyle birşey tanımlamışsa o zaman kod sonlanır.
#define EOF '-'
while((a=getchar()) != EOF) { };
Bu arada ::x:: sen bilgisayar mühendisliği okuyordun değil mi?
EOF ile linuxte gcc'de ctrl+d tuşu ile döngüyü sonlandırabilirsin. veya adı üzerinde file içini okurken end of file yapar çıkar.
Microsoft dos sisteminde ctrl+z yapılarak EOF değeri girilir