Cnin kütüphanelerinde direk kayıt silmeye yarayan bi fonksiyon bulamadım... struct olarak bilgiler kaydedilmiş, her struct numaralandırılmış ve numaraya gre struct silinmiş. Bunu bide şu şekilde yazmışlar; void KitapKayitSil //kayıt silme { char geciciISBN_NO ; cout<<"Silinecek olan kitabin ISBN numarasini giriniz : "; cin>>geciciISBN_NO; fstream file ; while(! file. eof { file. read(reinterpret_cast<char > , sizeof ; if } cout<<"Kayidiniz basariyla silinmistir."; file. close ; remove ; rename("Kitap. txt","Kitap1. txt"); } bu kodda struct kullanılmamış ama bunuda ben anlayamadım. Bu kodlarda ne yapılmış tam olarak? :)

: @Tuğberk büyük boyutlu kayıtlarda sıkıntı yaratır doğru ben bunu düşünmemiştim... daha nceki konuda senin yazdığın kodları düzenledim, değişkenleri bi yapıda toplayıp yapılacaklarıda fonksiyon haline getirdim. Kayıt silmek için ne yapacağımı bulamadım, silmeyi yapsam nce arama, sonra silme sonrada yeni kayıt fonksiyonlarını çalıştırıp düzenleme kısmınıda halledicem. reinterpret_cast<char > şu komutun ne işe yaradığını araştırdım ama tam bişey anlayamadım google sonuçlarından :/ Zaten büyük projelerde sql kullanılır, senin yaptığın proje küçük çaplı bir deneme projesi olacak büyük ihtimalle, dolayısıyla bu yntemi kullanabilirsin, zaten C ile byle db projeleri yazılmasını doğru bulmuyorum, her dilin belirli bir hedefi vardır, ancak ülkemizde C dersi de verilse, Visual Basic dersi de verilse rnekler standarttır, ğrenci takip programı vb. sql kullanmadan şu şekilde çok iyi performanslı bir arama tasarlayabilirsin, ISBN numarasını girdi olarak alıp, kitap index numarasını key olarak veren bir hash fonksiyonu tanımlayabilirsin. rneğin 1 milyon kitap için bir db olduğunu varsayalım, oluşturduğun hash fonksiyonu, isbn numarasını alıp 0-1000000 arasında bir benzersiz index değeri üretmelidir, bu değer kullanılarak, kitap listesindeki kitap tek hamlede seçilebilir, hiç bir arama karşılaştırma işlemine gereksinim kalmaz. diyelim ki girdi şu, 9757092126, bu girdiyi hash fonksiyonuna verdiğimizde çıktı 198541 değeri verdi, doğrudan o index li kitaba ulaşılır, istersen o kitabı ve bilgilerini lsitelersin, istersen başındaki bir baytı değiştirerek ya da komple yapı boyutu kadar silerek o kaydı yok etmiş olursun. Tabiki aynı hash ı üreten birden fazla girdi olabilmektedir, zaten hash fonksiyonlarının en büyük sıkıntısı budur ancak bağlı listeler gibi bir takım yntemler ile çzülebilmektedir. reinterpret_cast<char >' a gelince, o yapı C++ da a benzemekte, yani herhangi bir veri yapısını bir dizi ya da değişkene birebir dnüştürmeye yarar. rneğin 16 baytlık bir struct'ı 16 baytlık bir char dizisine birebir çevirirsin, bit bit aktarılır.

Çok ktü bir algoritma ve büyük dosyalarda çok kullanışsız. Ancak olayın yapıya okuma, satır okuma vs ile ilgisi yok, kayıtları satır satır yazdıysan satır satır okuyup kontrol edersin, yapı şeklinde yazdıysan yapı boyutu kadar okuyarak kontrol edersin. Yukarıdaki algoritma şunu yapıyor, kitap. txt dosyasından satır satır tüm kayıtları okuyor ve kitap1. txt dosyasına yazıyor, sadece silinmek istenen kayıta geldiğinde bunu kitap1. txt e yazmıyor, bylece kitap1. txt de ilgili kayıt hariç tüm kayıtlar var oluyor. işlem bitince kitap. txt siliniyor ve kitap1. txt in ismi kitap. txt olarak değiştiriliyor.

: bu kodda struct kullanılmamış ama bunuda ben anlayamadım. Bu kodlarda ne yapılmış tam olarak? kayit diye global bi değişken olması lazım yukarlarda bi yerde, Struct olması lazım onun da. Yani struct kullanılmamış dersek yanlış konuşmuş olabiliriz. Sen hiç kaval çaldın mı?

@JPriest doğru onu gzden kaçırmışım, konuyu açarken dersteydimde. @Tuğberk büyük boyutlu kayıtlarda sıkıntı yaratır doğru ben bunu düşünmemiştim... daha nceki konuda senin yazdığın kodları düzenledim, değişkenleri bi yapıda toplayıp yapılacaklarıda fonksiyon haline getirdim. Kayıt silmek için ne yapacağımı bulamadım, silmeyi yapsam nce arama, sonra silme sonrada yeni kayıt fonksiyonlarını çalıştırıp düzenleme kısmınıda halledicem. reinterpret_cast<char > şu komutun ne işe yaradığını araştırdım ama tam bişey anlayamadım google sonuçlarından :/ :)