Удалить из текста фразы, содержащие данное слово - C (СИ)
Формулировка задачи:
Дан файл, содержащий некоторый текст. Удалить из него фразы, содержащие слово мама
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f1,*f2; char str[100]; int i=0,k=0; f1=fopen("file1.txt","r"); if(f1 == NULL) { puts ("Error"); system("pause"); return 1; } f2=fopen("file2.txt","a"); if(f2 == NULL) { puts ("Error"); system("pause"); return 1; } while(!feof(f1)) { fscanf(f1,"%c",&str[i]); if(str[i]=='.') { for(i=0;str[i]!='.';i++) if((str[i]=='Г¬') && (str[i+2]=='Г¬') && (str[i+1]=='Г*') && (str[i+3]=='Г*') && ((str[i+4]=='.')||str[i+4]==' '||str[i+4]==',')) { fprintf(f2,"%c",str[i]); fprintf(f2,". "); } } } fclose(f1); fclose(f2); getch(); return 0; }
Решение задачи: «Удалить из текста фразы, содержащие данное слово»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f1,*f2; char str[100]; int i=0,k=0; bool L = false; f1=fopen("file1.txt","r"); if(f1 == NULL) { puts ("Error"); system("pause"); return 1; } f2=fopen("file2.txt","w"); if(f2 == NULL) { puts ("Error"); system("pause"); return 1; } for(i = 0; i < 100; i++)//очищаем буферную строку str[i] = '\0'; i = 0; while(!feof(f1)) { fscanf(f1,"%c",&str[i]); if(str[i]=='.') { for(k=0;str[k]!='.';k++) if((str[k]=='м') && (str[k+2]=='м') && (str[k+1]=='а') && (str[k+3]=='а') && ((str[k+4]=='.')||str[k+4]==' '||str[k+4]==',')) { L = true;//используем переменную как флаг, было ли найдено слово в предложении } if (!L)//если не было найдено ключевое слово пишем предложение в новый файл fprintf(f2,"%s",str); L = false; i = 0; for(i = 0; i < 100; i++)//очищаем буферную строку str[i] = '\0'; i = -1; } i++; } fclose(f1); fclose(f2); system("PAUSE");// return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Определяются функции входа и выхода программы.
- Создаются два указателя на файлы.
- Определяются две буферные строки.
- Устанавливаются начальные значения для переменных.
- Открываются файлы для чтения и записи.
- Осуществляется проверка на успешное открытие файлов.
- Файл
file1.txt
считывается посимвольно с помощью функции fscanf. - Если текущий символ является точкой, то начинается поиск следующего слова
ммма
. - Если слово
ммма
найдено, то флаг L становится true. - Если слово
ммма
не найдено, то предложение записывается в файлfile2.txt
. - После записи предложения, флаг L сбрасывается в false.
- Если в процессе чтения файла
file1.txt
встречается точка, то все буферные строки очищаются. - После успешного чтения и записи обоих файлов, они закрываются.
- Выводится сообщение
Press any key to continue...
. - Возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д