October 31, 2009
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?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 31, 2009

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]