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

 
 
 
Reply to this topicStart new topic
> ICC6, строки и scanf
lolful
сообщение Jul 29 2011, 11:58
Сообщение #1


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

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Как грамотно и безопасно просканировать строчку в ICCAVR6 с помощью scanf? То есть надо защититься от переполнения буфера. Делаю так:
Код
char param[2][20];
sscanf(str, "%19s %19s", param[0], param[1], 20);
Микроконтроллер Mega128 зависает, как и симулятор в AVRStudio 4.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 29 2011, 14:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



ICCAVR6 - это среда разработки от ImageCraft Creations Inc.? Если - да, то посмотрите в Help'е: функция sscanf не поддерживает спецификатор формата %s
Go to the top of the page
 
+Quote Post
lolful
сообщение Aug 1 2011, 03:18
Сообщение #3


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

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Да, ICC - это Image Craft.
В хелпе действительно нет %s в строке формата. Хм, странно. Но если пишешь
Код
sscanf(str, "%s %s", param[0], param[1]);
то срабатывает нормально, но тогда нужно как-то придумать способ не вылезти за пределы буфера.
А как дела обстоят в 7й и 8й версиях ICCAVR?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 1 2011, 05:59
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(lolful @ Aug 1 2011, 07:18) *
А как дела обстоят в 7й и 8й версиях ICCAVR?
В версии 7.22 раздел Help'а "Standard IO functions" аналогичен соответствующему разделу из версии 6
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 1 2011, 06:01
Сообщение #5


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

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



Цитата(lolful @ Aug 1 2011, 07:18) *
нужно как-то придумать способ не вылезти за пределы буфера.
fgets в помощь...
Цитата
А как дела обстоят в 7й и 8й версиях ICCAVR?
Также хреново. ICCAVR, как и CVAVR - пример самых неудачных компиляторов.
Мой вам дружеский совет: переходите на avr-gcc или iar, пока не поздно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
lolful
сообщение Aug 1 2011, 06:29
Сообщение #6


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

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Спасибо.
Цитата
Мой вам дружеский совет: переходите на avr-gcc или iar, пока не поздно.
К сожалению, уже поздно... Хотелось бы конечно IAR, но он, зараза, дорогой, да и проекты иметь в 2х средах не комильфо.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 1 2011, 07:31
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(demiurg_spb @ Aug 1 2011, 10:01) *
ICCAVR, как и CVAVR - пример самых неудачных компиляторов.
Мой вам дружеский совет: переходите на avr-gcc или iar, пока не поздно.
Присоединяюсь к совету. Сам когда-то начинал с ICC версии 6 потому, что начальльство не спросясь совета купило его. "Сполз" с него, когда ознакомился с седьмой версией от ImageCraft: залатали "дыры", но генерация кода стала просто безобразной... Лучше перейти на другую среду как можно быстрее - со временем переход будет всё более затруднительней. Если пугает высокая цена IAR, стоит посмотреть в сторону gcc.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Aug 2 2011, 17:46
Сообщение #8


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

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



1. У ICC есть одна особенность: в нем нечего нет (практически нет библиотек.... да и примеры в общем бесполезны, поэтому очень много приходится писать собственными руками, особенно под xmega (для которой есть только файлы описание регистров и все) - поэтому чтоб написать более менее приходится сильно изворачиваться, изучать подробно даташиты (особенно по регистрам...) - в этом есть определенный плюс, по сравнению с IAR - где многие научились использовать готовые библиотеки и не понимают что делают (точнее даже как работает определенный код, взаимодействие с регистрами...).
2. Вопрос цены немало важен (особенно если компилятор должен быть лицензионный).
3. По gcc - можно использовать, но на мой взгляд (если судить по реализации в AVR Studio 5) - Atmel пошла по пути IAR - компилятор для "супер" "мега" проектов с кучей всего, причем взять надо обязательно самый старший из линейки МК. А использовать gcc - в чистом виде (без заточки под AVR)- будет намного труднее.
А по оптимизации: есть более страшие версии ICC (в любом случае дешевле IAR в 7 раз) - правда не знаю насколько они оптимизируют rolleyes.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 3 2011, 04:26
Сообщение #9


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

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



Цитата(Leonmezon @ Aug 2 2011, 21:46) *
1. У ICC есть одна особенность: в нем нечего нет (практически нет библиотек....
Например каких?
Цитата
да и примеры в общем бесполезны, поэтому очень много приходится писать собственными руками, особенно под xmega (для которой есть только файлы описание регистров и все) - поэтому чтоб написать более менее приходится сильно изворачиваться, изучать подробно даташиты (особенно по регистрам...) - в этом есть определенный плюс, по сравнению с IAR - где многие научились использовать готовые библиотеки и не понимают что делают (точнее даже как работает определенный код, взаимодействие с регистрами...).
О каких таких библиотеках в IAR ведёте речь?
Цитата
3. По gcc - можно использовать, но на мой взгляд (если судить по реализации в AVR Studio 5) - Atmel пошла по пути IAR - компилятор для "супер" "мега" проектов с кучей всего, причем взять надо обязательно самый старший из линейки МК. А использовать gcc - в чистом виде (без заточки под AVR)- будет намного труднее.
Кто здесь старший? Куда пошёл? Скоро-ли вернётся? Ни одного вразумительного слова...
Цитата
А по оптимизации: есть более страшие версии ICC (в любом случае дешевле IAR в 7 раз) - правда не знаю насколько они оптимизируют rolleyes.gif
А я знаю. Плохо.


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

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

 


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


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