Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.10.2009, 12:32
|
|
Временная регистрация
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
сравнение массивов байт
Здравствуйте!
Вопрос по С для CodeVisionAVR
Мне нужно сравнивать 2 строки, одна из них константа например "Hello" задается в тексте программы
вторая задана как byte str[16] - массив из 16ти байт
длина строки известна и содержится в переменной N которая определена как byte N;
как можно сравнить такие строки
|
|
|
|
15.10.2009, 12:57
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Re: сравнение массивов байт
Не понятен вопрос.
вторая строка - массив из 16 байт или длинной N?
Что мешает сравнить поэлементно?
|
|
|
|
15.10.2009, 13:08
|
|
Временная регистрация
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: сравнение массивов байт
Сообщение от dimonbest
|
Не понятен вопрос.
вторая строка - массив из 16 байт или длинной N?
Что мешает сравнить поэлементно?
|
строка разной длины может быть
те. если бы я писал на паскале я бы написал
if str='Hello' then что_то делать;
.....
if str='go' then что то другое делать
вот аналог этого надо
(поэлементно не хочется, потеряется прелесть языка высого уровня)
может существует функция strcmp, но там ведь надо работать с указателями и нультерминированные строки
|
|
|
|
15.10.2009, 13:33
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Re: сравнение массивов байт
Вроде если ничего не путаю так:
Код:
|
#include ‹string.h›
unsigned char a[5]={1,2,3,4,5},b[5]={1,1,2,4,5};
................................
strcmp(&a[0],&b[0]); |
|
|
|
|
15.10.2009, 13:46
|
|
Временная регистрация
Регистрация: 26.09.2009
Сообщений: 81
Сказал спасибо: 4
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
|
Re: сравнение массивов байт
Сообщение от ESWANT
|
Мне нужно сравнивать 2 строки, одна из них константа например "Hello" задается в тексте программы
вторая задана как byte str[16] - массив из 16ти байт
|
Как Вам уже сказали выше:
#include ‹string.h›
char result;
uchar str[16];
result = strcmp(str, "Hello");
Если result == 0 , значит строки совпали.
|
|
|
|
15.10.2009, 14:09
|
|
Временная регистрация
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: сравнение массивов байт
Сообщение от espectr0
|
Как Вам уже сказали выше:
#include ‹string.h›
char result;
uchar str[16];
result = strcmp(str, "Hello");
Если result == 0 , значит строки совпали.
|
спасибо, а как функция strcmp определит окончание строки
у меня ведь после N идет мусор
наверно придется присвоить str[N+1]='\0';
|
|
|
|
15.10.2009, 14:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: сравнение массивов байт
result=strncmp(str, "Hello", N);
|
|
|
|
15.10.2009, 14:34
|
|
Временная регистрация
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: сравнение массивов байт
Сообщение от TEHb
|
result=strncmp(str, "Hello", N);
|
Вот это пойдет!
|
|
|
|
15.10.2009, 23:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: сравнение массивов байт
Сообщение от ESWANT
|
может существует функция strcmp, но там ведь надо работать с указателями и нультерминированные строки
|
Читаем классиков, тут прекрасненько описаны стандартные функции Си.. сам пользуюсь...
|
|
|
|
16.10.2009, 06:29
|
|
Временная регистрация
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: сравнение массивов байт
и еще вопросик
если str задана как Unsigned Char то все понятно
а если у меня вот такой фрагмент
void ExecuteCommand(byte str[16])
{
if(strncmp(str, "Hello",5)==0 )
FLAGI_UF=FLAGI_UF | 0b00000001;
}
как здесь привести типы????
кстати ругается на второй параметр flash unsigned char* не совпадает c unsigned char *
Последний раз редактировалось ESWANT; 16.10.2009 в 06:41.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:41.
|
|