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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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.RU
 
Аватар для 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.RU
 
Аватар для 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.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 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.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 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, время: 13:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot