Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

сравнение массивов байт

Непрочитано 15.10.2009, 12:32  
ESWANT
Временная регистрация
 
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
ESWANT на пути к лучшему
По умолчанию сравнение массивов байт

Здравствуйте!
Вопрос по С для CodeVisionAVR

Мне нужно сравнивать 2 строки, одна из них константа например "Hello" задается в тексте программы
вторая задана как byte str[16] - массив из 16ти байт
длина строки известна и содержится в переменной N которая определена как byte N;

как можно сравнить такие строки
Реклама:
ESWANT вне форума  
Непрочитано 15.10.2009, 12:57  
dimonbest
Гражданин KAZUS.RUN
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию Re: сравнение массивов байт

Не понятен вопрос.
вторая строка - массив из 16 байт или длинной N?
Что мешает сравнить поэлементно?
dimonbest вне форума  
Непрочитано 15.10.2009, 13:08  
ESWANT
Временная регистрация
 
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
ESWANT на пути к лучшему
По умолчанию Re: сравнение массивов байт

Сообщение от dimonbest Посмотреть сообщение
Не понятен вопрос.
вторая строка - массив из 16 байт или длинной N?
Что мешает сравнить поэлементно?

строка разной длины может быть
те. если бы я писал на паскале я бы написал

if str='Hello' then что_то делать;
.....
if str='go' then что то другое делать

вот аналог этого надо
(поэлементно не хочется, потеряется прелесть языка высого уровня)

может существует функция strcmp, но там ведь надо работать с указателями и нультерминированные строки
ESWANT вне форума  
Непрочитано 15.10.2009, 13:33  
dimonbest
Гражданин KAZUS.RUN
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию 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]);
dimonbest вне форума  
Непрочитано 15.10.2009, 13:46  
espectr0
Временная регистрация
 
Регистрация: 26.09.2009
Сообщений: 81
Сказал спасибо: 4
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
espectr0 на пути к лучшему
По умолчанию Re: сравнение массивов байт

Сообщение от ESWANT Посмотреть сообщение
Мне нужно сравнивать 2 строки, одна из них константа например "Hello" задается в тексте программы
вторая задана как byte str[16] - массив из 16ти байт
Как Вам уже сказали выше:

#include ‹string.h›

char result;
uchar str[16];

result = strcmp(str, "Hello");

Если result == 0 , значит строки совпали.
espectr0 вне форума  
Непрочитано 15.10.2009, 14:09  
ESWANT
Временная регистрация
 
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
ESWANT на пути к лучшему
По умолчанию Re: сравнение массивов байт

Сообщение от espectr0 Посмотреть сообщение
Как Вам уже сказали выше:

#include ‹string.h›

char result;
uchar str[16];

result = strcmp(str, "Hello");

Если result == 0 , значит строки совпали.
спасибо, а как функция strcmp определит окончание строки
у меня ведь после N идет мусор
наверно придется присвоить str[N+1]='\0';
ESWANT вне форума  
Непрочитано 15.10.2009, 14:20  
TEHb
Почётный гражданин KAZUS.RUN
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,387
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: сравнение массивов байт

result=strncmp(str, "Hello", N);
TEHb вне форума  
Непрочитано 15.10.2009, 14:34  
ESWANT
Временная регистрация
 
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
ESWANT на пути к лучшему
По умолчанию Re: сравнение массивов байт

Сообщение от TEHb Посмотреть сообщение
result=strncmp(str, "Hello", N);
Вот это пойдет!
ESWANT вне форума  
Непрочитано 15.10.2009, 23:30  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: сравнение массивов байт

Сообщение от ESWANT Посмотреть сообщение
может существует функция strcmp, но там ведь надо работать с указателями и нультерминированные строки
Читаем классиков, тут прекрасненько описаны стандартные функции Си.. сам пользуюсь...
Вложения:
picavr вне форума  
Непрочитано 16.10.2009, 06:29  
ESWANT
Временная регистрация
 
Регистрация: 30.04.2005
Сообщений: 99
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
ESWANT на пути к лучшему
По умолчанию 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.
ESWANT вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 08:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.