Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
atoi atof
Отправлено
ы
09 марта 2008 г. 14:57
В ответ на:
Есть ли в Си функции преобразования строк (массивов) в числа?
отправлено Dikoy 09 марта 2008 г. 14:55
Составить ответ
|
Вернуться на конференцию
Ответы
Ага, естьтакое. А указатель на массив она примет? Не надо ничего приводить к стрингу или что-то подобное? Тупо дать ей имя массива?
—
Dikoy
(09.03.2008 15:04:17
213.87.86.49
,
пустое
)
Ответ:
—
LordN
(09.03.2008 15:42:46
217.18.141.4
,
пустое
,
ссылка
)
а вы доктором не халтурите ? Лучше сразу google.com
—
DASM
(09.03.2008 15:47:29
212.58.208.91
,
пустое
)
так лучше?
—
LordN
(09.03.2008 15:56:29
217.18.141.4
,
пустое
,
ссылка
)
Не совсем. Это С99. А у микрософта свой путь. Этот С99 несмотря на широкую рекламу в embedded - изгой.
—
DASM
(09.03.2008 15:58:15
212.58.208.91
,
пустое
)
Если ASCII-элементы массива у тебя не разделены двоичными нулями, то получишь чушь
—
=AVR=
(09.03.2008 15:30:11
80.92.96.19
,
пустое
)
На 8 битном ядре никакого разделения не будет. Рамерность символа == размерности регистра.
—
Dikoy
(09.03.2008 16:31:41
213.87.86.113
,
пустое
)
Я не про биты, а про char'ы. Функции ato* предназначены для преобразования данных типа string, а этот тип по определению содержит байт 0х00 в конце. Для использования ato* тебе и нужно это обеспечить - а именно, чтобы каждый элемент массива у тебя выглядел, к примеру, так - "12345.678",0x00, т.е. hex [31 32 33 34 35 2E 36 37 38 00]
—
=AVR=
(09.03.2008 16:44:22
80.92.96.19
,
пустое
)
только массив должен нулем заканчиваться
—
DASM
(09.03.2008 15:14:45
212.58.208.91
,
пустое
)
0x00 или 0x30? Сейчас рою описаня строк в Си, но что-то не нахожу такого условия... Или это требования ф-ии atof?.. В хелпе про это ни слова...
—
Dikoy
(09.03.2008 15:32:4
213.87.86.49
,
пустое
)
нулем. Абсолютным. Типа бубки. 0. На который делить нельзя
—
DASM
(09.03.2008 15:33:43
212.58.208.91
,
пустое
)
в хелпе и не будет, ибо подразумевается, что человек знает, что все функции строковые подразумевают сишную нуль строку, то есть где конец этим нулем и определяется
—
DASM
(09.03.2008 15:36:26
212.58.208.91
,
пустое
)
Конём её. Посмотрел исходник atof - раза в 3 жирнее моего творения. Слишком универсальна, а мне это не надо. Так что лучше остановлюсь на своём труде и sizeof вместо нуль-строки :)
—
Dikoy
(09.03.2008 16:35:6
213.87.86.113
,
пустое
)
не спорю. Хотя и не совсем понимаю, как передать sizeof от других ф-ций. strlen все равно не убежишь. Да и чего счас экономить то - метр флеша , 256 ОЗУ - уже почти копейки
—
DASM
(09.03.2008 16:38:10
212.58.208.91
,
пустое
)
А зачем что-то передавать?
—
Dikoy
(09.03.2008 17:01:29
213.87.86.113
, 532 байт)
Если длина массива известна заранее, то не надо. Вопрос как жти массивы заполняются. Обычно по sprintf - тогда нет проблем, уже готовая нуль-строка. А если все свое могем написать, то зачем спрашивать было надо ? Куча способов сделать не так, как у людей есть, и Вы с ними знакомы.
—
DASM
(09.03.2008 17:07:57
212.58.208.91
,
пустое
)
Заполняются в прерывании UART, работающего на скорости 1200 :) Причём старшим символом вперёд - фиг пересчитаешь сразу в число. Вопрос был в том, изобретать велосипед, или не надо? Решился кастрированием atof до кондиции.
—
Dikoy
(09.03.2008 17:15:12
213.87.86.113
,
пустое
)
А, вот в чем дело, оказывается - тогда посмотри мои варианты на forum.microchip.com (мой ник там pic30) - очень похожая задачка (прием и преобразование ASCII-координат от GPS), и очень похожая проблема. Хоть и не AVR, но разницы никакой - обошлось вообще без atof -->
—
=AVR=
(09.03.2008 17:43:19
80.92.96.19
,
пустое
,
ссылка
)
Както опасно все писано. Почему новое имя типа через define? Почему при ulo...{+}
—
VasilyS
(09.03.2008 18:28:14
80.92.96.25
, 191 байт)
1)Патамушта это не typedef, а алиас. 2)Патамушта нужен именно (ulong)int*int_const, а не int*int_constUL - это не ulong арифметика, а ulong результат int арифметики
—
=AVR=
(09.03.2008 20:38:23
80.92.96.19
,
пустое
)
Удевительная простота. напористая и бестолковая. Да выучи язык то. Как надо...{+}(+)
—
VasilyS
(10.03.2008 18:56:43
80.92.96.25
, 569 байт)
Я пишу на ассемблерах. А ЭТО я написал в назидание "программистам" на МСС18, и все нюансы, которые ты в силу своей тупости понять не способен, относятся к его конкретной специфике. А на "академическом" ANSI С для МК пишут только те, кто зашорен тупым сводом галерного программирования - ветер в спину, пиши на здоровье, чем вас, таких мудаков, будет больше - тем больше я заработаю
—
=AVR=
(10.03.2008 20:23:3
80.92.96.19
,
пустое
)
ну раз решился, значит флаг в руки и звездочку октябренка на грудь :-)
—
DASM
(09.03.2008 17:18:31
212.58.208.91
,
пустое
,
картинка
)
yes
—
koyodza
(09.03.2008 15:11:11
77.123.62.213
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 567:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru