Поиск в массиве без подключения строковых функций - 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; //значит слова не совпали }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Определяются константы N и M (размеры массива)
- Создается массив bolt[M][N] с некоторыми строками
- Создается пустая строка str[N]
- Создаются и инициализируются переменные i, j и flag
- Выводится приглашение для ввода исходного слова
- С помощью функции fgets(), введенное слово сохраняется в строку str[N]
- В цикле заменяются все символы \n на \0 в строке str[N]
- В цикле проверяются все слова массива bolt[M][N] на совпадение с введенным словом
- Если символы в текущей позиции i совпадают, то продолжается проверка следующего символа, иначе устанавливается флаг = 1 и выполняется переход к следующей итерации внешнего цикла
- Если после проверки всех слов массива bolt[M][N] совпадение не найдено, то выводится сообщение об отсутствии искомого слова
- Возвращается 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д