Форум программистов, компьютерный форум CyberForum.ru

Поиск в массиве строк - C++

Восстановить пароль Регистрация
 
Serzik
-1 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 90
13.04.2014, 17:52     Поиск в массиве строк #1
Добрый день Возник глупый вопрос. Пытаюсь сделать поис в строковом массиве не как не получается подскажите что не такк.

Сам массив char *cK_Words[] = {"procedure", "case", "of", "end", "begin", "if", "than", "inherited", "Boolean", "Word", "nil"};

Пытаюсь найти это char cTest[] = {"than"};

C++
1
2
3
4
5
for(int i = 0; i <11; i++)
    {
        n = memcmp(cTest,*cK_Words,sizeof(cTest));
    }
    cout << n << endl<<endl;
Выдаёт что не равны в чём мой косяк
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 17:52     Поиск в массиве строк
Посмотрите здесь:

C++ Поиск в массиве
C++ Поиск в массиве
C++ Сравнение строк в массиве
C++ ошибка в массиве строк
C++ помогите найти ошибку. Поиск строк в массиве.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,165
Завершенные тесты: 1
13.04.2014, 19:37     Поиск в массиве строк #2
сравнение строк
C++
1
int res=strcmp(cTest,cK_Words[i]);
res равно нулю при совпадении.
Serzik
-1 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 90
13.04.2014, 20:53  [ТС]     Поиск в массиве строк #3
Не тоже самое возвращяет 1 такое чувство что он не идёт по массиву а тупо останавливается на 1 слове. Я думал что каждое слово это 1 индекс но вот функция sizeof мне возвращяет не 11 а 44.
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
13.04.2014, 22:06     Поиск в массиве строк #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Serzik, почему не используете класс string?
Если на указателях, то в общем случае предлагаю избавиться от сравнения по количеству элементов ( i < 11 ). Как вариант предлагаю сделать так, проверяя указатель на NULL.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main() {
    const char *cK_Words[] = { // NULL в конце массива как метка
            "procedure", "case", "of", "end", "begin", "if", "than", "inherited", "Boolean", "Word", "nil", NULL };
 
    const char cTest[] = "than"; // тестовое слово
 
    int i = 0; // счетчик для элементов массива строк
    while ( true ) {
        const char* currWord = *( cK_Words + i++ ); // очередное слово масства строк
 
        if ( !currWord ) // если указатель стал равен NULL, значит дошли до конца массива строк
            break; // дальше массив строк не пытаемся просмотреть
 
         // сравниваем очередное слово массива строк с тестовым словом
        if ( !strcmp( cTest, currWord ) ) { // если нашли совпадение
            cout << i - 1 << endl; // выводим номер слова в массиве - индексация элементов массива строк с нуля
            break; // дальше массив не просматриваем
        }
    }
    
    return 0;
}
Serzik
-1 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 90
13.04.2014, 22:21  [ТС]     Поиск в массиве строк #5
Спасибо просто указатель для меня в новинку тока не давно стал изучать с++
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
13.04.2014, 23:03     Поиск в массиве строк #6
Serzik, рекомендую взять популярную книгу по C++ и прочесть, выполняя примеры из книги.
Список литературы есть на данном форуме. Вот ссылка
Литература C++

Добавлено через 6 минут
И еще может быть Вы имели ввиду не than, а then ?
Serzik
-1 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 90
13.04.2014, 23:04  [ТС]     Поиск в массиве строк #7
Спасибо почетаю. Вот такой возник вопрос по твоему коду когда совпадения есть то всё ок когда совпадений нет он не проверяет конец строки и вылетает окно с ошибкой после чего программа завершается
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
13.04.2014, 23:09     Поиск в массиве строк #8
У меня нет никаких ошибок и при совпадении и без совпадений.
Цитата Сообщение от Serzik Посмотреть сообщение
совпадений нет он не проверяет конец строки и вылетает окно с ошибкой после чего программа завершается
Скриншот с ошибкой покажите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 23:18     Поиск в массиве строк
Еще ссылки по теме:

C++ Сортировка строк в массиве
C++ Поиск элементов строк и столбцов в двумерном массиве
В двумерном массиве заменить элементы строк с четными индексами элементами строк с нечетными индексами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Serzik
-1 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 90
13.04.2014, 23:18  [ТС]     Поиск в массиве строк #9
там эти слова потом подправлю мне нужно сделать сканер кторый будет сканить псевдо код и проверять если такие слова в нём или нет

Добавлено через 8 минут
Всё разобрался
Yandex
Объявления
13.04.2014, 23:18     Поиск в массиве строк
Ответ Создать тему
Опции темы

Текущее время: 17:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru