Сравнение элементов из двух 2d-массивов в C без strcmp - PullRequest
0 голосов
/ 19 октября 2018

Я создаю проверку орфографии в C. У меня есть словарный массив, который является двумерным массивом.Таким образом, каждое слово в словаре занимает строку в массиве 2d.Таким же образом мой входной массив также является двумерным массивом.Я хочу проверить правильность написания строк / слов в моем входном массиве. Я не могу использовать strcmp

Пример входного массива ['boy', 'girll', '.', 'Friend', ''] - может содержать пробелы, знаки препинания и слова.Мы заботимся о написании слов только в том случае, если пунктуация / пробел сравнивается со словом, мы игнорируем его и переходим к следующему слову.

пример словаря ['boy', 'girl', 'cow' ...] - все слова

Мой код:

 for (int a = 0; a < MAX_INPUT_SIZE + 1; a++)
  {

    for (int b = 0; b < MAX_DICTIONARY_WORDS; b++)
    {

        if(tokens[a]==dict_token[b])
        {
          printf("correct");
        }
        else
        {
          printf("wrong");
        }

    }


    }

Вывод "неправильный".Хотя 5 из 6 вводимых слов должны быть правильными.

1 Ответ

0 голосов
/ 19 октября 2018

Каждый тест возвращает false, потому что используемое вами сравнение

if(tokens[a]==dict_token[b])

сравнивает два указателя, которые никогда не будут указывать на один и тот же адрес, потому что тестируемый tokens находится всовершенно отдельный бит памяти для словаря dict_token, с которым вы сравниваете их.

Вам нужно передать два указателя tokens[a] и dict_token[b] в функцию сравнения, которая будет выполнять построчную сортировку.-буквенное сравнение, и которое вернет одно значение, когда найдет разницу между ними, и другое, когда доберется до конца обоих без нахождения разницы.Другими словами, вам нужно написать реализацию strcmp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...