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

 
 
> IAR AVR функция strstr, не могу разобраться
SZ0
сообщение Jul 22 2010, 18:02
Сообщение #1


Местный
***

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



Код
u8 str_buff[100];
c8 __flash *OKin = "OK";

if(strstr((const c8 *)str_buff,(const c8 *)OKin)return 0;


strstr всегда выдаёт указатель на начало буфера, даже если ОК там нет. Т.е. в начале буфера могут быть любые символы, а потом ОК. Как я понимаю, не правильно преобразовываю. Но не могу понять, как правильно преобразовать типы. Сам массив в озу, а строки в нём ищутся из flash.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jul 23 2010, 20:14
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



_Bill, похоже на то, что ваш алгоритм даст неправильный ответ, если обе строки изначально тождественны. При этом, когда flash-строка дойдет до своего нуля, rеsult обнулится (сработает условие !*pp), отбросив этот вариант, как не являющийся совпадением - а это неправильно.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jul 24 2010, 05:04
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Xenia @ Jul 24 2010, 00:14) *
_Bill, похоже на то, что ваш алгоритм даст неправильный ответ, если обе строки изначально тождественны. При этом, когда flash-строка дойдет до своего нуля, rеsult обнулится (сработает условие !*pp), отбросив этот вариант, как не являющийся совпадением - а это неправильно.

Хм... За правильность алгоритма не ручаюсь. Я только формально скорректировал существующий - заменил индексы на указатели, тип и значения вспомогательной переменной. Не более того. Возможно единственно, что может повлиять на правильность работы, так это изменение порядка проверки условия совпадения символов в строках. Тогда я неправ.
PS: Да, тут я действительно неправ. Посчитал не существенным порядок проверки.

Сообщение отредактировал _Bill - Jul 24 2010, 05:08
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SZ0   IAR AVR функция strstr   Jul 22 2010, 18:02
- - Xenia   Цитата(SZ0 @ Jul 22 2010, 21:02) Как я по...   Jul 22 2010, 18:36
|- - zltigo   QUOTE (Xenia @ Jul 22 2010, 21:36) Таковы...   Jul 22 2010, 19:10
||- - Xenia   Цитата(zltigo @ Jul 22 2010, 22:10) ....в...   Jul 22 2010, 20:52
||- - _Bill   Цитата(Xenia @ Jul 23 2010, 00:52) Ну вот...   Jul 23 2010, 03:36
||- - zltigo   QUOTE (Xenia @ Jul 22 2010, 23:52) Ну вот...   Jul 23 2010, 05:27
|- - SZ0   Спасибо за разъяснение. Придётся искомые строки в ...   Jul 23 2010, 02:32
- - SZ0   Строки пришлось определить так: Кодconst c8 OKin...   Jul 23 2010, 06:02
|- - zltigo   QUOTE (SZ0 @ Jul 23 2010, 09:02) Но вот е...   Jul 23 2010, 06:18
||- - mempfis_   Цитата(zltigo @ Jul 23 2010, 09:18) Писат...   Jul 23 2010, 06:46
|||- - _Bill   Цитата(mempfis_ @ Jul 23 2010, 10:46) +1 ...   Jul 23 2010, 16:28
|||- - _Bill   Я думаю, вашу функцию можно чуть-чуть эффективней ...   Jul 23 2010, 19:29
||- - IgorKossak   QUOTE (zltigo @ Jul 23 2010, 09:18) Писат...   Jul 23 2010, 06:50
|- - Xenia   Цитата(SZ0 @ Jul 23 2010, 09:02) Строки п...   Jul 23 2010, 11:10
|- - mempfis_   КодЗнаю два варианта решения вашей проблемы: ...   Jul 23 2010, 12:55
- - zltigo   Классический, писанный на 'C', strstr() CO...   Jul 24 2010, 06:16
- - desh   Я использую функцию которая работает одновременно ...   Aug 3 2010, 12:48


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

 


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


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