Создать новый текстовый файл, в который поместить каждое предложение из старого, начиная с новой строки и отступив от начала строки 5 пробелов. - C (СИ)

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

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

Здравствуйте, начались файлы, но вот я их не особо понял. Дан текстовый файл, в котором находится произвольный текст. Создать новый текстовый файл, в который поместить каждое предложение из старого, начиная с новой строки и отступив от начала строки 5 пробелов.
#include <stdio.h>
#include <string.h>
 
FILE *f1, *f2;
 
int main (void)
{
 
    char ch, st[250];
    int i=0;
    
    if ((f1=fopen("www.txt", "r+"))==NULL)
    {
        perror ("error1\n");
        return 1;
    }
    if ((f2=fopen("qqq.txt", "w"))==NULL)
    {
        perror ("erorr2\n");
        return 1;
    }
 
ch=getc(f1);
     while(ch!=EOF)
          {
               st[i]=ch;
               if(st[i]=='.' || st[i]=='!' || st[i]=='?')
              {
             // Нужно условие для занесения в новый файл, но я не понимаю как его записать
              }
            i++;                  
}
 
    fclose (f1);
    fclose (f2);
    return 0;
}
P.s. Спасибо

Решение задачи: «Создать новый текстовый файл, в который поместить каждое предложение из старого, начиная с новой строки и отступив от начала строки 5 пробелов.»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
FILE* f1, *f2;
 
int main(void)
{
   if ((f1 = fopen("www.txt", "r+")) == NULL)
   {
      perror("error1\n");
      return 1;
   }
   if ((f2 = fopen("qqq.txt", "w")) == NULL)
   {
      perror("erorr2\n");
      return 1;
   }
 
   int newline = 1;
   char ch;
   while ((ch = getc(f1)) != EOF)
   {
      if (newline)
      {
         fputs("     ", f2);
         newline = 0;
      }
 
      fputc(ch, f2);
 
      newline = (ch == '.' || ch == '!' || ch == '?');
 
      if (newline)
      {
         fputc('\n', f2);
      }
   }
 
   fclose(f1);
   fclose(f2);
   return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами
  2. Объявление указателей на файлы f1 и f2
  3. Открытие файла www.txt в режиме чтения и записи +
  4. Проверка на успешное открытие файла www.txt, если файл не открылся, то выводится сообщение об ошибке и возвращается 1
  5. Открытие файла qqq.txt в режиме записи +
  6. Проверка на успешное открытие файла qqq.txt, если файл не открылся, то выводится сообщение об ошибке и возвращается 1
  7. Инициализация переменной newline = 1
  8. Чтение символа из файла www.txt и сохранение его в переменную ch
  9. Если переменная newline равна 1, то выводится пробел и символ новой строки
  10. Символ из файла www.txt записывается в файл qqq.txt
  11. Переменная newline обновляется в зависимости от того, является ли символ точкой, восклицательным или вопросительным знаком
  12. Если переменная newline равна 1, то выводится символ новой строки
  13. Закрытие файлов f1 и f2
  14. Возвращение 0, что означает успешное выполнение программы

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


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

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

14   голосов , оценка 4.357 из 5
Похожие ответы