gcc sprintf fonksiyonu float sayıyı yazmıyor

Başlatan magnetron, 21 Nisan 2022, 17:02:55

magnetron

merhaba forum,

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
uint8_t strgoing[50]={}

    sprintf(strgoing,"%f",5.000);  bu sayıyı strgoing içine yazmıyor sadece f harfini basıyor

    sprintf(strgoing,"%d",5000);  bu sayıyı 5000 olarak yazıyor görüyorum

kaçırdığım bişey mi var bir türlü yazdıramadım

teşekkür

serkan


magnetron

teşekkür onu da denedim @serkan hocam en basit halini göreyim diye %f yazdım

büyük F harfi de denedim %5.3f de denedim olmadı

M_B

Hocam kullandığınız IDE ile ilgili olmasın.IDE nizin ayarlarını bi kontrol edin.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

Tagli

#5
Aklınızda olsun, sprintf()'i float sayılar ile multithread bir uygulamada kullanırsanız sıkıntı çıkabilir. Mesela FreeRTOS'ta iki thread aynı anda bu fonksiyona girerse.

Bunun sebebi bu fonksiyonun float ile işlem yaparken arka planda malloc() kullanıyor oluşu. Aslında bu tek başına bir sorun değil. Ancak malloc'a erişimin thread safe olması gerekiyor ve anladığım kadarıyla ST'nin hazır kütüphanelerinde ve örnek FreeRTOS kodlarında, gerekli bazı önlemler atlanmış.

Konu ile ilgili ST forumlarındaki bir tartışma ve bu olayı çözmeyi kafaya koymuş bir adamın çalışmaları.

Sorunun devam edip etmediğinden emin değilim.
Gökçe Tağlıoğlu

magnetron

Alıntı yapılan: M_B - 21 Nisan 2022, 17:39:19Hocam kullandığınız IDE ile ilgili olmasın.IDE nizin ayarlarını bi kontrol edin.
hocam hangi IDE ayarlarına bakmam gerekir
teşekkür

M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

kantirici

Merhaba,
Standart giriş çıkış fonksiyonları oldukça maliyetli olabiliyorlar. Gömülü sistemlerde bunlar için oldukça hafif, dinamik bellek kullanmayan alterntifler var, onları kullanmak uygun. Örneğin

http://elm-chan.org/fsw/strf/xprintf.html

Tagli

Bu arada forum linkini yanlış vermişim, şimdi düzelttim.
Gökçe Tağlıoğlu