Hoşgeldin noobie! :)
(Not: Buraya yazdığın kod örneklerini renkli görünmeleri için 'code' belirteçleri arasına alabilirsin. Ben seninkini değiştirdim; ona bakabilirsin.)
- chomp, kendisine verilen parametreyi değiştirmez. (Ben de tekrar öğrenmek zorunda kaldım. :)) O yüzden dosya isminin sonunda bir de '\n' karakteri kalıyor. Bunu ogrenci_adi'nı okuduktan sonra çıkışa yazdırarak gördüm:
writeln("-", ogrenci_adi, "-");
chomp'un döndürdüğünü tekrar değişkene atamak gerekiyor:
ogrenci_adi = chomp(ogrenci_adi);
Ama ben şu yöntemi çok daha kolay ve risksiz buluyorum:
string ogrenci_adi = chomp(readln());
Şurada biraz bilgi var: http://ddili.org/ders/d/dizgiler.html
Üstelik o zaman okunan veriyi string olarak da tanımlayabiliyoruz.
- Kullanıcıya veri girilmesiyle ilgili mesaj gösterildiğinde write daha güzel oluyor. O zaman kullanıcı aynı satırda girebiliyor:
write("Ogrencinin ismini giriniz: ");
- Bende öğrencinin yaşı istendiği yerde program takılıyor. Sanıyorum o durumda readln()'ın farklı bir yüklemesi devreye giriyor:
int numara;
writeln("Ogrenci numarasi giriniz");
stdin.readln(numara);
readln'e int verildiğinde sanıyorum dchar alan yüklemesi kullanılıyor. int okumak için readf uygun:
int numara;
writeln("Ogrenci numarasi giriniz");
stdin.readf(" %s", &numara);
%s'den önceki boşluğun neden gerektiğini de şurada yazmışım: http://ddili.org/ders/d/standart_giris.html
Şimdi doğru çalışıyor! :)
Ben Türkçe harfler de kullanarak şu hale dönüştürdüm:
import std.string;
import std.stdio;
void main()
{
write("Öğrencinin ismini giriniz: ");
string öğrenci_adı = chomp(readln());
string dosya_adı = öğrenci_adı ~ ".txt";
File dosya = File(dosya_adı, "a+");
int numara;
write("Öğrencinin numarasını giriniz: ");
readf(" %s", &numara);
writeln("Teşekkürler");
dosya.writeln("Ad:", öğrenci_adı);
dosya.writeln("Numara:", numara);
writeln("Bitti");
}
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]