Forum: Ders Arası RSS
D.ershane Dosyalar
erdem (Moderatör) #1
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: D.ershane Dosyalar
Dosyalar dersindeki ilk örneği std.stdio.File yapısı kullanarak yapmıştım. Ama nedense boş satırları kontrol etmiyor gibi gözüküyor. Direkt ikinci dosyaya ilk dosyanın aynısını kopyalıyor.

Halbuki okunan satırın uzunluğunun sıfır olup olmadığını da kontrol ediyorum :huh:

import std.stdio;
import std.cstream;
 
 
void main() {
 
    writeln ("Okunacak dosyanın ismi giriniz: ");
 
    char [] dosyaİsmi;
    din.readf (&dosyaİsmi);
 
    string giriş = dosyaİsmi.idup;
    string çıkış = giriş ~ ".bak";
 
    File dosya1 = File (giriş, "r");
    File dosya2 = File (çıkış, "w");
    
 
    while (!dosya1.eof()) {
        string satır = dosya1.readln();
 
        if (satır.length != 0) {
            dosya2.writeln (satır);
        }
 
    }
}
acehreli (Moderatör) #2
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ı
Biraz daha sabır! :) Bütün std.cstream'leri std.stdio ile değiştirdim; şimdi bir kere daha üzerinden geçiyorum. (84 dosya değişmiş!)

O örnek kodun yeni hali şu:

import std.stdio;
import std.string;
 
void main()
{
    write("Dosya ismi? ");
    string girişDosyasıİsmi = chomp(readln());
    File giriş = File(girişDosyasıİsmi, "r");
 
    string çıkışDosyasıİsmi = girişDosyasıİsmi ~ ".bak";
    File çıkış = File(çıkışDosyasıİsmi, "w");
 
    while (!giriş.eof()) {
        string satır = chomp(giriş.readln());
 
        if (satır.length != 0) {
            çıkış.writeln(satır);
        }
    }
 
    writeln(çıkışDosyasıİsmi, " dosyasını oluşturdum");
}

Ali
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet haklısınız. Gene dosyanın içinde karakter olmayan kodlar yüzünden bu hata oluyormuş. chomp kullanınca düzeldi.

Ben de bu kaynak dosyasını elle oluşturdum. Nasıl olsa kullanıcı Enter tuşuna basmıyor, kullanıcıdan veri almıyoruz; o zaman dosyaya da yazmıyor diye düşünüyordum :) Demek ki dosyaları kendimiz oluşturduğumuz zaman da bir şekilde bu karakter olmayan tuşları Tab, Enter, satır sonu (ne varsa) dosyaya kaydediyor.
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-22, 07:00:10 (UTC -08:00)