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

 
 
> Сравнение строк атмега32
Kruftin
сообщение Jun 1 2012, 06:34
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365



Как проще всего сравнить значения в массиве со строкой?
Пусть есть массив char Buf[10];
Нужно узнать соответствуют ли его элементы например слову "test";
Ну слово тест можно например в массив упрятать. Так вот не по символу же сравнивать совпадение? Ну или если по символу, то как быстрее?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
MrYuran
сообщение Jun 1 2012, 06:40
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



string.h


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Jun 1 2012, 07:19
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
Так вот не по символу же сравнивать совпадение?
а как иначе ? memcmp, strcmp, strncmp
Go to the top of the page
 
+Quote Post
Kruftin
сообщение Jun 1 2012, 07:59
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365



Ну т.е. получится нечто вроде:
Код
#include <string.h>

char Buf[20] = "Test";
char string1[] = "Test";
if(!strcmp(Buf[],string1[]))
{
   body
}
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Jun 1 2012, 08:04
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



да, но можно короче:
Код
#include <string.h>
char Buf[20] = "Test";
if(!strcmp(Buf[], "Test")) {
   body
}
Go to the top of the page
 
+Quote Post
Kruftin
сообщение Jun 1 2012, 08:27
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365



А еще не подскажете как сделать массив пустым, после выполнения всех операций?
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Jun 1 2012, 08:34
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



в каком смысле ? освободить занимаемую память ? или заполнить пробелами ?
Go to the top of the page
 
+Quote Post
Kruftin
сообщение Jun 1 2012, 08:45
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365



Заполнить пробелами, ну т.е. захочу я например заново записать данные в массив для сравнения, причем по байту, тогда чтобы сработало лексикографическое сравнение мне достаточно заполнить массив пробелами, если да, то как быстрее?
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Jun 1 2012, 08:56
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



memset
Go to the top of the page
 
+Quote Post
Kruftin
сообщение Jun 1 2012, 09:42
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365



Код
char buf[20] = "test";
char c = "";
memset(buf[],c,21);


компилятор CVAVR на такое if(!strcmp(gga_data[], "$GPGGA")) ругается типа неверное выражение. Видимо надо просто писать gga_data, без скобочек.

Сообщение отредактировал Kruftin - Jun 1 2012, 09:48
Go to the top of the page
 
+Quote Post
Kruftin
сообщение Jun 1 2012, 11:26
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365



А еще не подскажете, почему у меня через терминал не отправляется по уарту строчка, начинающаяся с доллара?А ну хотя это похоже особенности терминала, проблема исчерпана.

Сообщение отредактировал Kruftin - Jun 1 2012, 11:31
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:43
Рейтинг@Mail.ru


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