Поиск в массиве без подключения строковых функций - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нет совпадений, что я делаю не правильно?
#include <stdio.h>
int main()
{
        char str[10];
        char bolt[][10] = {"table", "window", "picture", "stone"};
        printf("%s", "Введите искомое слово: ");
        fgets(str, sizeof(str), stdin);
        for (int i = 0; i <= (sizeof(bolt)/10); i++)
        {
                if(str == bolt[i])
                {
                        printf("Слово %s найдено в базе\n", str);
                        return 0;
                }
        }
        printf("Слово %s не найдено в базе\n", str);
        return 0;
}

Решение задачи: «Поиск в массиве без подключения строковых функций»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 4
int main()
{
    char bolt[M][N] = {
                "table",
                "window",
                "picture",
                "stone",
        };
    char str[N];
    int i, j, flag;
    puts("Enter source word:");
    fgets(str, N, stdin);
    for(i = 0; i < N; i++){//в введенном слове заменяем \n на \0
        if(str[i] == '\n')
            str[i] = '\0';
    }
    for(j = 0; j < M; j++){
        flag = 0;
        for(i = 0; i < N && str[i] != '\0'; i++){//сверяем слова посимвольно
            if(str[i] != bolt[j][i]){
                flag = 1;break;
            }
        }
        if(!flag && str[i] == '\0' && bolt[j][i] == '\0'){//если все буквы совпали и слова закончились одновременно
            printf("The array has word '%s'.", str);
            exit(0);
        }
    }
    printf("The word '%s' not found.", str);//если не было выхода из программы по совпадению
    return 0;                                //значит слова не совпали
}

Объяснение кода листинга программы

  1. Включаются заголовочные файлы stdio.h и stdlib.h
  2. Определяются константы N и M (размеры массива)
  3. Создается массив bolt[M][N] с некоторыми строками
  4. Создается пустая строка str[N]
  5. Создаются и инициализируются переменные i, j и flag
  6. Выводится приглашение для ввода исходного слова
  7. С помощью функции fgets(), введенное слово сохраняется в строку str[N]
  8. В цикле заменяются все символы \n на \0 в строке str[N]
  9. В цикле проверяются все слова массива bolt[M][N] на совпадение с введенным словом
  10. Если символы в текущей позиции i совпадают, то продолжается проверка следующего символа, иначе устанавливается флаг = 1 и выполняется переход к следующей итерации внешнего цикла
  11. Если после проверки всех слов массива bolt[M][N] совпадение не найдено, то выводится сообщение об отсутствии искомого слова
  12. Возвращается 0, что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы