реклама на сайте
подробности

 
 
> Вывод с помощью fprintf в WinAVR, Помогите с форматированным выводом
smk
сообщение Jul 1 2011, 16:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Мне нужно выводить строчку в виде "F = 0.0000 Hz". При этом число дожно иметь три вида в зависимости от значения частоты: 1) 0.0000; 2) 00.000; 3) 000.00 . Как правильно это сделать используя библиотечные функции форматированного вывода? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Jul 4 2011, 08:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Запустите примеры, которые вам коллеги советовали и увидите, работает или нет.
Go to the top of the page
 
+Quote Post
smk
сообщение Jul 4 2011, 09:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(sergeeff @ Jul 4 2011, 11:56) *
Запустите примеры, которые вам коллеги советовали и увидите, работает или нет.

не работает. потому и подумал, что неправильно что-то сделал.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 4 2011, 09:03
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(smk @ Jul 4 2011, 13:00) *
не работает. потому и подумал, что неправильно что-то сделал.


Ну напишите в main для проверки:
Код
   float pi = 3.14f;
   printf("pi = %.02f\n", pi);

Должно печатать:
Код
pi = 3.14

Go to the top of the page
 
+Quote Post
smk
сообщение Jul 4 2011, 12:01
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(sergeeff @ Jul 4 2011, 12:03) *
Ну напишите в main для проверки:
Код
   float pi = 3.14f;
   printf("pi = %.02f\n", pi);

Должно печатать:
Код
pi = 3.14

Вот такая ошибка:
Код
../exampl.c:44: warning: format '%.02f' expects type 'double', but argument 2 has type 'float'

В моем случае может следует вот так:
Код
  printf(stderr, "pi = %.02f\n", pi);


Цитата(demiurg_spb @ Jul 4 2011, 12:49) *
Тоже давненько наткнулся на отсутствие обработки символа звёздочка в форматере pfintf'a в gcc.
А топикстартеру рекомендую обратить внимание на функцию
Код
dtostrf(f, WIDTH, PREC, buff)
таким образом можно выиграть по памяти не включая в проект толстую printf с поддержкой float.

Обратил. Теперь пытаюсь понять как пользоваться.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 4 2011, 19:07
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(smk @ Jul 4 2011, 16:01) *
Теперь пытаюсь понять как пользоваться.

Да вроде всё тривиально.
Цитата
char* dtostrf (double __val, char __width, char __prec, char * __s)

The dtostrf() function converts the double value passed in val into an ASCII representationthat will be stored under s. The caller is responsible for providing sufficient storage in s. Conversion is done in the format '[-]d.ddd'. The minimum field width of the output string (including the '.' and the possible sign for negative values) is given in width, and prec determines the number of digits after the decimal sign.

The dtostrf() function returns the pointer to the converted string s.
Разве нет?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- smk   Вывод с помощью fprintf в WinAVR   Jul 1 2011, 16:20
- - ReAl   В стандартном С это делаетcя так (ширина поля и то...   Jul 1 2011, 19:52
- - smk   Не получается. Нужно как-то иначе. Или прийдется п...   Jul 3 2011, 12:32
|- - ReAl   Цитата(smk @ Jul 3 2011, 15:32) Не получа...   Jul 3 2011, 17:06
|- - demiurg_spb   Цитата(ReAl @ Jul 3 2011, 21:06) Точно, н...   Jul 4 2011, 09:49
|- - ReAl   Цитата(demiurg_spb @ Jul 4 2011, 12:49) Т...   Jul 4 2011, 23:15
|- - smk   Цитата(ReAl @ Jul 5 2011, 02:15) Конечно ...   Jul 5 2011, 06:31
|- - demiurg_spb   КодFILE myout = FDEV_SETUP_STREAM(lcd_putchar,...   Jul 5 2011, 06:52
|- - smk   Цитата(demiurg_spb @ Jul 5 2011, 09:52) К...   Jul 5 2011, 07:13
|- - demiurg_spb   Цитата(smk @ Jul 5 2011, 11:13) как-то ну...   Jul 5 2011, 07:20
- - skripach   printf("F = %06f Hz\n", value); Не?   Jul 3 2011, 14:08
|- - smk   Цитата(skripach @ Jul 3 2011, 17:08) prin...   Jul 4 2011, 05:23
|- - ARV   Цитата(smk @ Jul 4 2011, 08:23) Значение ...   Jul 4 2011, 06:20
|- - smk   Цитата(ARV @ Jul 4 2011, 09:20) не включе...   Jul 4 2011, 07:34
- - sergeeff   А в printf включена поддержка float?   Jul 3 2011, 18:37
- - Dnepr33   Цитата(smk @ Jul 1 2011, 19:20) Мне нужно...   Jul 3 2011, 18:46
- - smk   Чет не выходит. Наверно таки проще свою процедурку...   Jul 4 2011, 19:29
|- - demiurg_spb   Вольному - воля. PS: если аргумент prec отрицатель...   Jul 4 2011, 19:34
- - smk   я тут похоже с указателем напутал. вывод на диспле...   Jul 4 2011, 20:15


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 19:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016