|
Вывод с помощью fprintf в WinAVR, Помогите с форматированным выводом |
|
|
|
Jul 4 2011, 19:07
|

неотягощённый злом
     
Группа: Свой
Сообщений: 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. Разве нет?
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jul 4 2011, 20:15
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
я тут похоже с указателем напутал. вывод на дисплейчик происходит из Код FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE); stderr = &lcd_str; dtostrf (frq, 3, 1, stderr); наверно так не правильно.
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
Jul 4 2011, 23:15
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(demiurg_spb @ Jul 4 2011, 12:49)  Тоже давненько наткнулся на отсутствие обработки символа звёздочка в форматере printf'a в gcc. В avr-gcc. Так как в "большом" (lin/win) всё с этим нормально. Для армов не проверял пока. Цитата(smk @ Jul 4 2011, 23:15)  наверно так не правильно. Конечно неправильно. И в описании, и в прототипе функции явно видно, что нужно выводит в строку (символьный массив). А уже строку потом puts-ом в нужный поток.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jul 5 2011, 07:13
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Цитата(demiurg_spb @ Jul 5 2011, 09:52)  Код FILE myout = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE); stderr = &myout; stdout = &myout;
char str[40]; dtostrf (frq, 3, 1, str); puts(str); // или printf("F = %s Hz\n", str); как-то нужно из массива в строку мне кажется
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
Jul 5 2011, 07:20
|

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

|
Цитата(smk @ Jul 5 2011, 11:13)  как-то нужно из массива в строку мне кажется Не понял. Я дал Вам рабочий вариант как мне думается. В си массив и строка по сути одно и то же. Я понял. Вам нужна хорошая книга по си. А то Вы тут строите какие-то догадки и предположения на пустом месте. Извините я умываю руки.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|