Forum: Ders Arası RSS
Dosya işlemleri
Avatar
Racih (Moderatör) #1
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Dosya işlemleri
Selamlar,

Burdaki derslerden öğrendiğim kadarıyla, basit bir öğrenci kayıt programcığı yazdım.

 
 
import std.stream;
import std.cstream;
import std.array;
 
string[][] öğrenciler;
 
void main()
{
    int ogr_sayisi;
    
    dosyaOku();
    dout.writef("Kaç Öğrenci Gireceksiniz ? : ");
    din.readf(&ogr_sayisi);
    
    auto sonaEkle = appender(&öğrenciler);
    for(int i = 0; i < ogr_sayisi; i++){
        char[] isim;
        char[] soyad;
        
        dout.writef("İsim : ");
        din.readf(&isim);
        dout.writef("Soyad : ");
        din.readf(&soyad);
        
        sonaEkle.put([cast(string)isim,cast(string)soyad]);
    }
    dosyaYaz(öğrenciler);
}
 
void dosyaYaz(string[][] öğr){
    
    File dosya = new File("ogrenci_dosyasi", FileMode.OutNew);
    dout.writefln(öğr[0][0]);
    if(öğr[0][0] != "İsim" && öğr[0][1] != "Soyad"){
        dosya.writefln("İsim ", " Soyad");
    }
    for(int i = 0; i < öğr.length; i++){
        dosya.writefln(öğr[i][0]," ", öğr[i][1]);
    }
    
    dout.writefln("Yazma işlemi başarılı !");
}
void dosyaOku(){
    auto sonaEkle = appender(&öğrenciler);
    
    File dosya = new File("ogrenci_dosyasi", FileMode.In);
    while(!dosya.eof()){
        char[] isim;
        char[] soyad;
        dosya.readf(&isim, &soyad);
        dout.writefln("Satır --> ", isim," ",soyad);
        sonaEkle.put([cast(string)isim,cast(string)soyad]);
    }
}
Avatar
esatarslan52 (Moderatör) #2
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Eline sağlık...

Fakat Türkçe karakter içeren isimlerde hata veriyor. Ben stringleri dstring ve charlarıda dchar yapıp denedim ama işe yaramadı  :-/ .
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Çok güzel! :)

En baştaki dosyaOku() çağrısı bende patladı çünkü henüz klasörde "ogrenci_dosyasi" yoktu:

$ ./deneme
std.stream.OpenException: Cannot open or create file 'ogrenci_dosyasi'


Programı şöyle değiştirdim:

import std.file;
// ...
string dosya_ismi = "ogrenci_dosyasi";
// ...
    if (exists(dosya_ismi)) {
        dosyaOku();
    }

Bende Türkçe karakter sorunu yok:

$ cat ogrenci_dosyasi
İsim  Soyad
Ali Ğüştenlibayır
Şörciböğrt Oğiştimengığz


;)

Ali
Avatar
esatarslan52 (Moderatör) #4
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Sorun herzamanki gibi windowsta ozaman  <_<

if (exists(dosya_ismi))
Bende dosyanın ilk kez mi oluşturulacak yoksa daha önceden oluşturulmuş mu diye bulmak için abuk subuk kod denemeleri yapıyordum :).
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
esatarslan52:
Bende dosyanın ilk kez mi oluşturulacak yoksa daha önceden oluşturulmuş mu diye bulmak için abuk subuk kod denemeleri yapıyordum :).

Wiki'nin std.file sayfasına da gönderme yapayım tabii ki... İçinde başka yararlı fonksiyonlar da var.

Ali
Avatar
Racih (Moderatör) #6
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
En baştaki dosyaOku() çağrısı bende patladı çünkü henüz klasörde "ogrenci_dosyasi" yoktu

Ahh ... ona ben düzenleme getirecektim. Düzenlemeden koymuşum. Neyseki güzel bir ekleme yapmışsınız teşekkürler ... :)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 06:02:33 (UTC -08:00)