C sprintf sorunu-sorusu

Başlatan esensoy, 29 Mart 2016, 15:19:44

esensoy

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ğmen
sprintf(str,"%02.f", 5.37);
yazarsam str ye 05 atıyor, var mı fikri olan?
En tehlikeli an "zafer" anıdır.

JKramer

%'nin yanındaki toplam uzunluğu belirliyor, sadece nooktanın solunu değil. %02 yerine %07 yazsanız olması lazım.

esensoy

Hocam süpersin ya, teşekkürler.
Gerçi uzun yoldan çözmüştüm ama bir sürü tantanadan kurtardın beni,
En tehlikeli an "zafer" anıdır.

pea

"%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/
https://wpollock.com/CPlus/PrintfRef.htm#printfFlags