dmd 2.052'de girişten okumayı değiştirdiler. Şu program birincinin sonunda basılan Enter'a karşılık gelen satır sonu kodları nedeniyle takılıp kalıyor:
import std.stdio;
void main()
{
int birinci;
write("birinci: ");
readf("%s", &birinci);
int ikinci;
write("ikinci : ");
readf("%s", &ikinci);
}
Bir çözüm, genel bir ilke olarak düzen belirteçlerinden önce "buradaki bütün boşlukları oku ve gözardı et" anlamına gelen tek boşluk kullanmak:
readf(" %s", &birinci);
// ...
readf(" %s", &ikinci);
Tek düzen dizgisi kullanıldığında da aynı:
readf(" %s %s", &birinci, &ikinci);
Bence tutarlı ama C'den sapmış oluyor. C'de arada boşluk bulunmasa da çalışır:
scanf("%s%s", &birinci, &ikinci);
D'de boşluk kullanılmazsa takılıyor.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]