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

 
 
 
Reply to this topicStart new topic
> Преобразование int в char и prntf
MarYuriy
сообщение May 7 2012, 13:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 20-11-10
Пользователь №: 61 036



Здравствуйте!

Использую Keil и stm32f103.

Как преобразовать переменную в строку? В хидерах нет функции itoa().

Хотел, как альтернативу для передачи по USART использовать функцию printf() - контроллер зависает напрочь.
Go to the top of the page
 
+Quote Post
Вячик13
сообщение May 7 2012, 13:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604



Цитата(MarYuriy @ May 7 2012, 16:10) *
Здравствуйте!

Использую Keil и stm32f103.

Как преобразовать переменную в строку? В хидерах нет функции itoa().

Хотел, как альтернативу для передачи по USART использовать функцию printf() - контроллер зависает напрочь.

А причём тут printf? Нужно использовать sprintf. С этим же набором он у меня прекрасно работает.
Go to the top of the page
 
+Quote Post
andron86
сообщение May 7 2012, 14:26
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Наверное так.
Код
void Integer2Str(char *s, int bin, unsigned char cnt)
{
    s += cnt;

    while (cnt--)
    {
        *--s = (bin % 10) + '0';
        bin /= 10;
    }
}
Go to the top of the page
 
+Quote Post
MarYuriy
сообщение May 8 2012, 06:21
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 20-11-10
Пользователь №: 61 036



Спасибо, andron86, всё работает!

Вячик13, sprintf() я тоже пробовал, не работает, может не так пробовал?

Пробую так:

char bf[50];
int sp, a = 12, b = 112;
sp = sprintf(bf, "%d minus %d = %d",a,b,a-B );
print("\n\r");

Сообщение отредактировал MarYuriy - May 8 2012, 06:22
Go to the top of the page
 
+Quote Post
toweroff
сообщение May 8 2012, 09:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(MarYuriy @ May 8 2012, 10:21) *
Пробую так:

char bf[50];
int sp, a = 12, b = 112;
sp = sprintf(bf, "%d minus %d = %d",a,b,a-B );
print("\n\r");

1. Почему a-B
2. И что в конце? ну получили bf, а дальше-то что?
Go to the top of the page
 
+Quote Post
MarYuriy
сообщение May 8 2012, 10:01
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 20-11-10
Пользователь №: 61 036



Цитата(toweroff @ May 8 2012, 12:31) *
1. Почему a-B
2. И что в конце? ну получили bf, а дальше-то что?


1.Потому что B - это часть преобразованного смайлика - я упустил это, когда отправил сообщение -> cool.gif. B )
2. Я и не понимаю, как им пользоваться.
Go to the top of the page
 
+Quote Post
toweroff
сообщение May 8 2012, 10:37
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



мда...
Код
sprintf(bf,"%d",a);
print(bf);
print("\n\r");


в Вашем случае в bf получите
Код
12 minus 112 = -100
Go to the top of the page
 
+Quote Post
kan35
сообщение May 8 2012, 11:55
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Для того, чтобы prntf заработал следует во первых определить функцию вывода символа
int putchar (int);
Кроме того, для нормально работы printf (чтобы не зависал) следует увеличить стек на 200-300 слов.
Go to the top of the page
 
+Quote Post
карабас
сообщение May 9 2012, 16:59
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 8-12-09
Пользователь №: 54 123



и еще полезно почитать реализацию Chana, ссылка http://elm-chan.org/fsw/strf/xprintf.html
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:46
Рейтинг@Mail.ru


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