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

 
 
 
Reply to this topicStart new topic
> long to string в IAR?, как преобразовать число в строку?
Vladi33
сообщение Jul 1 2005, 09:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 13-05-05
Пользователь №: 4 979



Здравствуйте, помогите!
Как преобразовать число в строку?
В ICCAVR пользовался функцией ltoa()
В IAR такой функции нет, подозреваю что нужен printf(), но не получается:

#include <stdio.h>
unsigned char buf[20];
long la;
#define stdout buf;
void main(){
la=10;
printf("hello");
printf("%l",la);
PrnBuf();
}
Ничего не работает, буфер пуст, что делать?
пробовал разные настройки.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 1 2005, 09:35
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Функция ltoa() нестандастная.
Но пользоваться лучше не printf(), а sprintf_P() с форматной строкой во флеш памяти.
Или написать свою функцию с применением ldiv().
Go to the top of the page
 
+Quote Post
Vitaly
сообщение Jul 3 2005, 10:01
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 17-06-05
Пользователь №: 6 095



Цитата(Vladi33 @ Jul 1 2005, 12:19)
Здравствуйте, помогите!
Как преобразовать число в строку?
В ICCAVR пользовался функцией ltoa()
В IAR такой функции нет, подозреваю что нужен printf(), но не получается:

#include <stdio.h>
unsigned char buf[20];
long la;
#define stdout buf;
void main(){
  la=10;
  printf("hello");
  printf("%l",la);
  PrnBuf();
}
Ничего не работает, буфер пуст, что делать?
пробовал разные настройки.
*


Я поступил проще - из ICCAVR взял исходники функций itoa() и ltoa() и скомпилил в IAR. Нормально работает.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 5 2005, 07:28
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Vitaly @ Jul 3 2005, 13:01)
Я поступил проще - из ICCAVR взял исходники функций itoa() и ltoa() и скомпилил в IAR. Нормально работает.
*

А чего бы ей и не работать если написана на С? Ведь там нет ничего аппаратнозависимого.
Другое дело, когда нет исходников или реализовано без ldiv (с применением ldiv работает быстрее), то алгоритм очень простой, состоящий в преобразовании в символ (прибавлении '0') остатка от деления исходного числа на 10.
Go to the top of the page
 
+Quote Post
NickB
сообщение Jul 5 2005, 07:32
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 22-06-04
Пользователь №: 102



В stdlib.h находим :
__INTRINSIC MEMORY_ATTRIBUTE long int strtol(const char *, char **, int);
__INTRINSIC MEMORY_ATTRIBUTE unsigned long int strtoul(const char *, char **,
int);
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 5 2005, 07:58
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(NickB @ Jul 5 2005, 10:32)
В stdlib.h находим :
__INTRINSIC MEMORY_ATTRIBUTE long int strtol(const char *, char **, int);
__INTRINSIC MEMORY_ATTRIBUTE unsigned long int strtoul(const char *, char **,
                                                      int);
*

Немного не из той оперы.
Ведь надо long to string, а не string to long.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:19
Рейтинг@Mail.ru


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