Code #include <string.h> #include <stdio.h>
void main (void) { FILE *in, *out; char ch, find[50]; int line=0; int count=0; char *name1 = "text.txt", *name2 = "text.log"; if ((in=fopen(name1, "r"))==NULL) std::cout << "ERROR" << std::endl; else {
printf ("Input the string: "); scanf ("%s", find); printf ("Length: %i\n", strlen(find));
while (!feof(in)) { ch = getc(in); printf ("(Scan) %c, ",ch); if (ch==char(10)) line++; if (ch==find[0]) { printf ("\nFind in %i\n", line); for (int i=1; i<(int)strlen(find);i++) { ch = getc(in); printf ("(Find first) %c, ",ch); printf ("(Find) %c\n",find[i]); if (ch==find[i]) count++; else break; } printf ("Count: %i\n", count); if (count+1 == strlen(find)) printf ("OK\n"); count=0; } //printf ("%c",ch); } printf ("\n");
fclose (in);
system("pause");} } Кириллицу не добавлял. Результат работы программы довольно интересный, в стиле шпионских боевиков. Файл text.txt например выглядит так: Code sdfsdf sdfsdfwefw vbggege sdfwerwervcx qwsaxc kagfbu refdfvfv ewerwf find me sdf wer wer fds bgtyuy uikmuj wer wer sdfsfsdf Будем искать слово wer. Итак, открываем файл text.txt на чтение, вводим искомое слово. Искомое слово сохраняется в массиве из 50-и элементов типа char. Далее знакомый нам уже цикл, работающий до конца файла. При сканировании символа на экран выводится подсказка "(Scan)". Сравниваем символ с первым символом искомого слова, затем если оно похоже, в цикле проверяем остальные. Принадлежность слова к искомому проверяется сравнением количества найденных символов с количеством в введённом слове. При этом выводится слово "OK". В общем пощупайте, лишний вывод на экран нужно убрать, иначе эта программа больше похожа на отладочный вариант. (что в принципе, так и есть) Удачи
|