Поиск слова в строке - C (СИ)
Формулировка задачи:
Добрый день.
Ни как не могу сделать программу чтобы работала для двумерного массива,
работает только для одной первой строки.
задание: если введенное слово найдено в строке то выводится сообщение что слово найдено если не то это слово вставляется после второго слова и так для каждой строки.
заранее благодарен.
#include <stdio.h> #include <string.h> #define MAX 11 #define LEN 80 #define B ' ' char text[MAX][LEN] ,word[LEN], *pch, e[LEN]; int main(int argc, char* argv[]) { register int t, i, j; printf("Eter text.\n"); for(t=0; t<MAX; t++) { printf("%d: ", t); gets(text[t]); } for(i=0; i<t; i++) { for(j=0; text[i][j]; j++) putchar(text[i][j]); putchar('\n'); } printf("Enter word.\n"); gets (word); if (strstr(text[i],word) != NULL) printf("The word \"%s\" found\n",word); else pch = strchr (*text , B ) ; if ( pch ) pch = strchr ( pch + 1 , B ) ; if ( pch ) { strcpy ( e, pch + 1 ) ; strcpy (pch+1,word); strcat (*text," "); strcat (*text,e); } printf (" Result : %s", text); putchar ('\n'); return 0; }
Решение задачи: «Поиск слова в строке»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #define MAX 5 #define LEN 256 int main() { char str1[MAX][LEN] = { 0 }; for (int z = 0; z < MAX; z++) { printf("Enter string %d: ",z+1); gets(str1[z]); } static char sw[LEN] = "\0"; printf("\nEnter a word: "); gets(sw); printf("\n"); for (int i = 0; i < MAX; i++) { if (!strstr(str1[i], sw)) { int d = 0; int count = 0; while (str1[i][d] != '\0' && count < 2) if (isspace(str1[i][d++])) count++; int len = strlen(sw) + 1; while (--len >= 0) { for (int q = strlen(str1[i])-1; q >= d-1; q--) str1[i][q+1] = str1[i][q]; } for (int n = 0; sw[n] != '\0'; n++) str1[i][n+d] = sw[n]; printf("%s - \"%s\" word inserted\n",str1[i],sw); continue; } printf("%s - \"%s\" word found\n",str1[i],sw); } _getch(); return 0; }
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Объявление массива строк и его заполнение с помощью функции
gets()
. - Ввод искомого слова с помощью функции
gets()
. - Проверка наличия искомого слова в каждой строке массива с помощью функции
strstr()
. Если слово не найдено, выполняется следующий блок кода: - Инициализация переменных
d
иcount
для обработки пробелов в строке. - Удаление пробелов в строке с помощью цикла
while
. - Определение длины искомого слова и его добавление в конец строки с помощью цикла
while
. - Копирование символов искомого слова в соответствующую позицию в строке с помощью цикла
for
. - Вывод сообщения об успешном добавлении слова в строку.
- Если слово найдено, выводится соответствующее сообщение.
- В конце программы используется функция
_getch()
для приостановки выполнения программы до нажатия клавиши. - Возврат значения 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д