Я довольно новичок в C, и я подумал, что я попытаюсь создать программу, которая расшифровывает ввод строки, чтобы показать реальное слово, и у меня это работает, но с некоторыми словами я получаю неожиданные результаты.Вот пример того, как он работает правильно:
Введите слово: стоп
Матч: опции
Матч: пост
Матч: банки
Матч: место
Match: stop Match: tops
Я использую список слов, который я получил из программы под названием «aspell», которая позволила мне создать файл, полный слов.Что странно, когда я ввожу слово типа «тест» или «футбол», ответ возвращает слова, в которых есть буквы, которых изначально не было во входном слове.Что я здесь не так делаю?Ниже приведена моя функция unscrambleWord, которая выполняет большую часть работы.Также я опубликую пример "футбола"
int unscrambleWord(int fgLetters) {
// integer used for the counter
int i = 0;
// first make sure that the lengths of the word and of the list word is the same
if(strlen(currentLine) == strlen(input)) {
// loop through each letter in the word given
for(i = 0; i < strlen(input); i++) {
// search the line for the current letter, if we find it increment fgLetters
if(strchr(currentLine, input[i]) != NULL)
fgLetters++;
} // end for
// once we have finished looping through the word; evaluate fgLetters
if(fgLetters == strlen(input)) {
// fgLetters will be equal to the length of the word if each letter appears in the word
printf("\tMatch: %s \n", currentLine);
} // end if - evaluate length of fgLetters
}
// return the fgLetters after we have possibly incremented it
return fgLetters;
}
Вот пример футбола:
Enter Word:football
Match: blastoff
Match: boastful
Match: flatboat
Match: football
Match: lifeboat
Match: softball
По какой-то причине в строках матча есть s, но числосимволы кажутся одинаковыми.