Удалить из текста фразы, содержащие данное слово - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан файл, содержащий некоторый текст. Удалить из него фразы, содержащие слово мама
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[]) {
  4. FILE *f1,*f2;
  5. char str[100];
  6. int i=0,k=0;
  7. f1=fopen("file1.txt","r");
  8. if(f1 == NULL)
  9. {
  10. puts ("Error");
  11. system("pause");
  12. return 1;
  13. }
  14. f2=fopen("file2.txt","a");
  15. if(f2 == NULL)
  16. {
  17. puts ("Error");
  18. system("pause");
  19. return 1;
  20. }
  21. while(!feof(f1))
  22. {
  23. fscanf(f1,"%c",&str[i]);
  24. if(str[i]=='.')
  25. {
  26. for(i=0;str[i]!='.';i++)
  27. if((str[i]=='Г¬') && (str[i+2]=='Г¬') && (str[i+1]=='Г*') && (str[i+3]=='Г*') && ((str[i+4]=='.')||str[i+4]==' '||str[i+4]==','))
  28. {
  29. fprintf(f2,"%c",str[i]);
  30. fprintf(f2,". ");
  31. }
  32. }
  33. }
  34. fclose(f1);
  35. fclose(f2);
  36. getch();
  37. return 0;
  38. }

Решение задачи: «Удалить из текста фразы, содержащие данное слово»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[]) {
  5.     FILE *f1,*f2;
  6.     char str[100];
  7.     int i=0,k=0;
  8.     bool L = false;
  9.     f1=fopen("file1.txt","r");
  10.     if(f1 == NULL)
  11.     {
  12.         puts ("Error");
  13.         system("pause");
  14.         return 1;  
  15.     }
  16.     f2=fopen("file2.txt","w");
  17.     if(f2 == NULL)
  18.     {
  19.         puts ("Error");
  20.         system("pause");
  21.         return 1;  
  22.     }
  23.  
  24.     for(i = 0; i < 100; i++)//очищаем буферную строку
  25.         str[i] = '\0';
  26.     i = 0;
  27.  
  28.     while(!feof(f1))
  29.     {
  30.         fscanf(f1,"%c",&str[i]);
  31.         if(str[i]=='.')
  32.         {
  33.             for(k=0;str[k]!='.';k++)
  34.                 if((str[k]=='м') && (str[k+2]=='м') && (str[k+1]=='а') && (str[k+3]=='а') && ((str[k+4]=='.')||str[k+4]==' '||str[k+4]==','))
  35.                 {
  36.                     L = true;//используем переменную как флаг, было ли найдено слово в предложении
  37.                 }
  38.                 if (!L)//если не было найдено ключевое слово пишем предложение в новый файл
  39.                     fprintf(f2,"%s",str);
  40.                 L = false;
  41.                 i = 0;
  42.                 for(i = 0; i < 100; i++)//очищаем буферную строку
  43.                     str[i] = '\0';
  44.                 i = -1;
  45.         }
  46.         i++;
  47.     }
  48.     fclose(f1);
  49.     fclose(f2);
  50.     system("PAUSE");//
  51.     return 0;
  52. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы.
  2. Определяются функции входа и выхода программы.
  3. Создаются два указателя на файлы.
  4. Определяются две буферные строки.
  5. Устанавливаются начальные значения для переменных.
  6. Открываются файлы для чтения и записи.
  7. Осуществляется проверка на успешное открытие файлов.
  8. Файл file1.txt считывается посимвольно с помощью функции fscanf.
  9. Если текущий символ является точкой, то начинается поиск следующего слова ммма.
  10. Если слово ммма найдено, то флаг L становится true.
  11. Если слово ммма не найдено, то предложение записывается в файл file2.txt.
  12. После записи предложения, флаг L сбрасывается в false.
  13. Если в процессе чтения файла file1.txt встречается точка, то все буферные строки очищаются.
  14. После успешного чтения и записи обоих файлов, они закрываются.
  15. Выводится сообщение Press any key to continue....
  16. Возвращается 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы