Найти слово в текстовом файле - C (СИ)
Формулировка задачи:
добрый день! как организовать поиск слова
while
в текстовом файле на СИ? Есть такой код на с++, необходимо переделать под сиif (s.find("while")!=string::pros)
Решение задачи: «Найти слово в текстовом файле»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> #include <string.h> void modifyword(char* w); int main() { FILE * infile; int st = 0; char word [30], findword[30] = "while"; infile = fopen ("file.txt" , "r"); if (infile == NULL) perror ("Error opening file"); else { while (!feof(infile)) { if(fscanf (infile, "%s", word)!= 1) { perror("File is empty"); return -1; } modifyword(word); if(!strcmp(word, findword)) { printf("%s\n", word); st++; } } if(!st) puts("The word not found"); fclose (infile); } return 0; } void modifyword(char* w) { // все кроме букв убираем в конце слова int i = strlen(w), st = 0; char *ch = w; while(i) { if(isalpha(*(w + i))) break; i--; } *(w + i + 1) = '\0'; //////////////////////////////////////// // все кроме букв убираем в начале слова while(*w) { if(isalpha(*w)) st = 1; if(st) *(ch++) = *w ; w++; } *ch = '\0'; }
Объяснение кода листинга программы
- Объединение двух строк с помощью оператора конкатенации (==)
- Использование функции fopen для открытия файла
- Использование функции feof для проверки конца файла
- Использование функции fscanf для чтения слова из файла
- Вызов функции perror для вывода сообщения об ошибке
- Использование функции strcmp для сравнения двух строк
- Использование функции printf для вывода найденного слова
- Использование функции puts для вывода сообщения, что слово не найдено
- Использование функции fclose для закрытия файла
- Использование функции isalpha для проверки, является ли символ буквой
- Использование функции strlen для определения длины строки
- Использование оператора break для выхода из цикла
- Использование оператора i++ для перехода к следующему символу в строке
- Использование оператора w++ для перехода к следующему символу в строке
- Использование оператора (ch++) = w ; для переноса букв в новую строку
- Использование оператора *(ch) = '\0'; для добавления нулевого символа в новую строку
- Объединение двух строк с помощью оператора конкатенации (||)
- Использование функции strlen для определения длины строки
- Использование оператора i-- для перехода к предыдущему символу в строке
- Использование оператора break для выхода из цикла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д