Как сравнить строки массива?
- Войдите на сайт для отправки комментариев
Пт, 01/06/2018 - 19:48
Уважаемые знакомки подскажите, как сравнить строки массива?
Т.е. есть массивы:
1) byte addr[8];
2) byte addr1[8][8];
Нужно написать условие, по которому полностью сравнивается строка массива addr со строкой addr1 и при отсутствии совпадения она бы записывалась в массив addr1. И так 8 раз. Есть совпадения ничего не пишем, есть уникальная строка, записываем… как это реализовать? Заранее спасибо!
см. memcmp.
Нужно написать условие,
Если нужно, - напишите.
Если там у Вас именно стрки (оканчивающиеся '\0'), то используйте функцию strcpm, а если произвольные куски памяти, то memcmp.
А когда напишете, если вдруг что-то не так, публикойте код и задавайте вопросы.
Смог сделать только так:
Но при этом, почему-то, не отрабатывает условие... Т.е. изначально массив addr содержит данные и при сравнении с пустым массивом addr1 они должны быть не равны... И далее addr1 должен скопировать в себя значения addr. Но почему то в итоге выводится строчка "False". Т.е. массивы вроде как одинаковые. Но это не так. Где я ошибся в условии?
1. Вставка программного кода в тему/комментарий(если не хотите получать ответы типа "у Вас ошибка в строке № ХЗ)
2. А что, наши советы про strcmp и memcmp прошли мимо?
#include <OneWire.h> int pin = 10; OneWire ds(pin); byte addr[8]; byte addr1[8][8]; void setup() { Serial.begin(9600);} void loop() { if (ds.search(addr)){ if ( addr[0] != addr1[0][0] && //ПОЧЕМУ НЕ РАБОТАЕТ ЭТО УСЛОВИЕ? addr[1] != addr1[0][1] && addr[2] != addr1[0][2] && addr[3] != addr1[0][3] && addr[4] != addr1[0][4] && addr[5] != addr1[0][5] && addr[6] != addr1[0][6] && addr[7] != addr1[0][7]) { int p=0; while (p<8) { addr1[0][p] = addr[p]; p++; } } else { Serial.println("False"); } ds.reset_search();}}2. А что, наши советы про strcmp и memcmp прошли мимо?
С реализацией пока не могу разобраться...
2. А что, наши советы про strcmp и memcmp прошли мимо?
С реализацией пока не могу разобраться...
Не, тебя в гугле забанили. И не только в гугле, а, по ходу, вообще везде. Ты не в чебурнете сидишь случаем? Вот тебе ссылка, пользуйся: https://www.google.ru/search?newwindow=1&rlz=1C1GGRV_enRU753RU753&ei=fsoSW8DQJcjawQKT9q-ACg&q=memcmp+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&oq=memcmp+%D0%BF%D1%80&gs_l=psy-ab.3.0.33i160k1l2.28843.29562.0.30953.3.3.0.0.0.0.183.359.0j2.2.0....0...1c.1.64.psy-ab..1.2.357...0j0i203k1.0.g3qJhc1Qfg0
Пока я вижу, что ты хочешь, чтобы написали ЗА ТЕБЯ. Сравнить два блока памяти - не бином Ньютона, разберёшься ;)
DIYMan большое спасибо!