Forum: Ders Arası RSS
Girişi satır satır okumak
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Girişi satır satır okumak
void dosyaOluştur()
{
    write("Programın ismi: ");
    char[] programınİsmi;
    din.readf(&programınİsmi);
    File dosya = File(programınİsmi.idup, "a");
    char[] kod;
    while (true){
        writeln("girilecek kodu giriniz");
        din.readfln(&kod);
        if (kod=="çıkış".dup){
            break;
            }
        dosya.writeln(kod.idup);
        }
}

Burada konsola merhaba dünya yazdığımda dosyaya merhaba yazıyor ve alt satıra inip dünya yazıyor. Ama ben merhaba yazıp boşluk bırakıp dünya yazmasını istiyorum.

Yani girilen dizgiyi sözcük sözcük değil satır satır okusun istiyorum. Bunu nasıl yapabilirim ?

d.ershanede sözcük sözcük değilde satır satır okumadan bahsedilmemiş. C'de nasıl bunu hallediyorsunuz diye baktım sanırım getch ile karakter karakter okutarak hallediyormuşunuz ama d ile nasıl yaparım bilmiyorum?
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ı
Satır satır okumak için readLine() var. Ancak dosya ismini girdikten sonra girişte kalan satır sonu karakterini okumak için fazladan bir readLine() daha gerekti.

Programı kendimce biraz değiştirdim:

import std.stdio;
import std.cstream;
 
void dosyaOluştur()
{
    dout.writef("Programın ismi: ");
    char[] programınİsmi;
    din.readf(&programınİsmi);
    din.readLine();
 
    File dosya = File(programınİsmi.idup, "a");
 
    while (true) {
        dout.writefln("girilecek kodu giriniz");
 
        char[] kod = din.readLine();
        if (kod=="çıkış".dup) {
            break;
        }
 
        dosya.writeln(kod.idup);
    }
}
 
void main()
{
    dosyaOluştur();
}

readLine()'ı dosyalar dersinde göstermişim aslında. Ama bence en güzeli foreach, çünkü bir akımın sonuna kadar satır satır okur. Girişi sonlandırmak için "çıkış" gibi bir sözcük yerine akım sonu bekleyebilsek, kod çok daha temiz oluyor:

import std.stdio;
import std.cstream;
 
void dosyaOluştur()
{
    dout.writef("Programın ismi: ");
    char[] programınİsmi;
    din.readf(&programınİsmi);
    din.readLine();
 
    File dosya = File(programınİsmi.idup, "a");
 
    dout.writefln("satırları giriniz");
 
    foreach (char[] satır; din) {
        dosya.writeln(satır);
    }
}
 
void main()
{
    dosyaOluştur();
}

O programda girişi sonlandırmak için Linux'ta Ctrl-D, Windows'da Ctrl-Z...

Ali
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, 04:25:27 (UTC -08:00)