Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Как сравнить содержание строки с набором символов?
Отправлено
Чайниковский_вопрос
(72.167.131.121)
09 января 2010, г. 03:00
Есть буфер
char buf_str[20];
В буфер записаны символы
buf_str[0] = 'T'; buf_str[1] = 'E'; buf_str[2] = 'S';
buf_str[3] = 'T'; buf_str[4] = '\0';
if (buf_str == "TEST") {выполняем действие}
Но действие не выполняется, а при комппиляции выпадает предупреждение
'==': different memory space
Как правильно сравнить строку с символами???
Составить ответ
|
Вернуться на конференцию
Ответы
int memcmp(const void *s1, const void * s2, size_t len )
-
VasilyS
(09.01.2010, 11:42:4
80.92.96.25
, 46 байт)
Именно строками это делается. Но не обычными массивами. Как уже было сказано ниже. Добавлю,
-
Vit
(09.01.2010, 11:23:20
93.73.142.45
, 578 байт,
ссылка
)
в ANSI C нету строк, есть только масивы типа char, оператор равенства надо применять не ко всей строке а сравнивать массивы посимвольно - примеры кода в любой книжке
-
NAUT
(09.01.2010, 03:05:15
213.85.253.138
,
пустое
)
*оператор сравнения
-
NAUT
(09.01.2010, 03:05:52
213.85.253.138
,
пустое
)
Т.е. запись if (buf_str == "TEST") не корректная и надо каждую букву сравнить в отдел...{+}(+)
-
Чайниковский_вопрос
(09.01.2010, 03:11:1
72.167.131.121
, 251 байт)
вообще это стандартная функция из стандартной библиотеки, cmpstr, щас поищу реализацию, несложная, 3 строки
-
NAUT
(09.01.2010, 03:15:5
213.85.253.138
,
пустое
)
*strcmp ... а Вы как хотели, сравнить куски памяти одной инструкцией процессора? все равно побайтно (посимвольно) сравнивать
-
NAUT
(09.01.2010, 03:23:1
213.85.253.138
,
пустое
)
Не, такой подход опасен. Уж попадал на то, что нет гарантированного нуля в конце строки. Уж лучше "поднапрячься" и в цикле for с констанстным пределом сравнивать.
-
POV
(09.01.2010, 10:21:23
91.203.67.154
,
пустое
)
Если в конце нет гарантированного нуля, strncmp () Вам в помощь. Использование своего кода, вме...{+}(+)
-
libc
(09.01.2010, 12:58:31
144.206.181.131,144.206.181.53
, 975 байт)
Да это все понятно. Просто голимый С редко пользую. не всё знаю :))
-
POV
(09.01.2010, 20:16:42
91.203.67.154
,
пустое
)
реализация из Кернигана-Ричи
-
NAUT
(09.01.2010, 03:25:34
213.85.253.138
, 815 байт)
Должно что-то быть. Ну не дело элементарную операцию превратить в 10 строк кода с циклами
-
Чайниковский_вопрос
(09.01.2010, 03:20:28
72.167.131.121
,
пустое
)
Ответ: Добавь к букавке С пару крестиков и будет тебе щастье типа: string
-
PaulS
(09.01.2010, 09:15:41
89.179.25.53
,
пустое
)
стркмп, балда..
-
Dr.Alex
(09.01.2010, 03:21:31
81.25.57.242
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
при вычитании трёх из шести получится:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru