Удалить из текста фразы, содержащие данное слово - 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, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д