Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => Konuyu başlatan: esensoy - 29 Mart 2016, 15:19:44

Başlık: C sprintf sorunu-sorusu
Gönderen: esensoy - 29 Mart 2016, 15:19:44
Selamlar,
XC16 da karşılaştım, codeblocks ta da denedim, sonuç aynı, şöyle ki;

diyelim ki char str[50]; diye bir değişkenimiz var,
sprintf(str,"%02.04f", 5.37); yazdığımızda str nin 05.3700 şeklinde olması lazım ama 5.3700 oluyor, yani tam sayı kısmını 2 hane olarak yazmıyor, halbu ki %nin yanında ki 0 ondalık taraf verilen haneden küçük ise 0 ile doldur demek, bug mı var nedir anlamadım,

Buna rağmensprintf(str,"%02.f", 5.37); yazarsam str ye 05 atıyor, var mı fikri olan?
Başlık: Ynt: C sprintf sorunu-sorusu
Gönderen: JKramer - 29 Mart 2016, 15:50:46
%'nin yanındaki toplam uzunluğu belirliyor, sadece nooktanın solunu değil. %02 yerine %07 yazsanız olması lazım.
Başlık: Ynt: C sprintf sorunu-sorusu
Gönderen: esensoy - 29 Mart 2016, 15:51:44
Hocam süpersin ya, teşekkürler.
Gerçi uzun yoldan çözmüştüm ama bir sürü tantanadan kurtardın beni,
Başlık: Ynt: C sprintf sorunu-sorusu
Gönderen: pea - 29 Mart 2016, 15:52:18
"%02.4f
Minimum uzunluğu 2 karakter olan, virgülden sonra 4 basamak hassasiyetli float değişken yazdırır.
"5.3700" virgülden sonra 4 basamak, toplam uzunluk 6. Format parametrelerini sağlamakta, doğru sonuçtur.

Printf'te float'un tam sayı kısmının uzunluğunu belirten bir parametre yok bildiğim kadarıyla.

"%02.f"
Minimum uzunluğu 2 olan, 0 ile pad'lenmiş, virgülden sonra hassasiyeti olmayan float değişken yazdırır. Burada da "05" doğru sonuç.

http://www.cplusplus.com/reference/cstdio/printf/ (http://www.cplusplus.com/reference/cstdio/printf/)
https://wpollock.com/CPlus/PrintfRef.htm#printfFlags (https://wpollock.com/CPlus/PrintfRef.htm#printfFlags)