Jump to content
Sign in to follow this  
-=FISHER=-

Вопрос по sprintf()

Recommended Posts

Всем привет!

Хотел спросить про функцию sprintf, мне в общем нужно в строку вставить значение с десятичной точкой. Делаю это следующим образом:

sprintf(new_string, "New value: %f %%", 1.23);

Затем отправляю получившуюся строку по USART и надеюсь увидеть в терминале: New value: 1.23 %

А получаю: New value: ? %

Подскажите пожалуйста, где я ошибаюсь?

Edited by -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites

В компиляторах есть параметры для экономии памяти. В CodeVisionAVR есть такой

1126.jpg.b3ef80442aab27c2c9e3f6d14d6fa5b4.jpg

По умолчанию sprintf работает только с целыми.

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Инновационные технологии Analog Devices в области управления питанием» (11.08.2021)

В программе вебинара технология Silent Switcher® - сочетание высокого КПД и сверхмалого уровня ЭМИ, технология uModule® - высокоинтегрированные решения для источников питания, микро- и нанопотребляющие DC/DC-преобразователи, решения для резервного питания, цифровое управление системой питания (PSM), безоптронные изолированные обратноходовые преобразователи. В практической части вебинара будут продемонстрированы примеры работы с инструментами Analog Devices для проектирования источников питания.
Подробнее

12 минут назад, snn_krs сказал:

CodeVisionAVR

Я использую Atmel Studio. Интересно, там есть такая настройка?:huh:


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites

Концевые микропереключатели KLS – простая и надежная коммутация по оптимальной цене

На складе Компэл широко представлены нажимные переключатели от KLS в стандартных и миниатюрных корпусах с различными типами актуаторов. Микропереключатели серий KLS7-KW10 и KLS7-KW4-3Z соответствуют строгим стандартам электрической безопасности и эффективности, что гарантирует надежную коммутацию цепей управления.

Подробнее

55 минут назад, -=FISHER=- сказал:

Подскажите пожалуйста, где я ошибаюсь?

Вопервых точно не f. 

В во вторых  usart передает байты, и на другом конце их нужно правильно декодировать. 

Посмотрите какие байты принимаются и не отображаются. 

Вобще передаваемый массив  нужно собриить побайтово под "принимающую сторону"

Share this post


Link to post
Share on other sites

Датчики STMicroelectronics – новые возможности систем умного дома ST

Согласно прогнозам аналитиков, в ближайшие пару лет будет наблюдаться заметный рост рынка датчиков движения и положения для умного дома. Компания STMicroelectronics предлагает одну из самых широких линеек MEMS-датчиков, включая акселерометры, гироскопы, цифровые компасы, модули IMU, микрофоны и датчики параметров окружающей среды. Рассмотрим применение датчиков и тенденции их развития.
Подробнее

3 минуты назад, dasZebra сказал:

Вопервых точно не f. 

В во вторых  usart передает байты, и на другом конце их нужно правильно декодировать. 

При чем здесь байты? sprintf должна всё склеить в кодах ASCII.

Почему же не f, как раз таки модификатор f используется для чисел типа double.

Какое бы число я не указывал в качестве дробного. В терминале вижу как раз код знака ? то есть 3F


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
13 минут назад, -=FISHER=- сказал:

При чем здесь байты? sprintf должна всё склеить в кодах ASCII.

Была бы должна, отобразилось бы. Просто поглядите сколько добавляет эта функция к  коду - чего там вобще хз.

Share this post


Link to post
Share on other sites
22 часа назад, -=FISHER=- сказал:

мне в общем нужно в строку вставить значение с десятичной точкой

и вам принципиально нужно использовать функцию sprintf() ??? 

Может вам простым С-кодом подготовить строку которую вы хотите вывести? Си-шные библиотеки на контроллерах это такая вещь в себе и работают они в любом случае до поры до времени и тянут за собой кучу проблем.


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
27.02.2021 в 12:19, ruhi сказал:

Может вам простым С-кодом подготовить строку

Да, я так в итоге и решил сделать)) жаль что сразу не догадался :)


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites

и это будет гораздо проще, чем забивать память библиотечной функцией.


Мудрость приходит вместе с импотенцией...

Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...