Создать новый текстовый файл, в который поместить каждое предложение из старого, начиная с новой строки и отступив от начала строки 5 пробелов. - C (СИ)
Формулировка задачи:
Здравствуйте, начались файлы, но вот я их не особо понял. Дан текстовый файл, в котором находится произвольный текст. Создать новый текстовый файл, в который поместить каждое предложение из старого, начиная с новой строки и отступив от начала строки 5 пробелов.
P.s. Спасибо
#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;
}Решение задачи: «Создать новый текстовый файл, в который поместить каждое предложение из старого, начиная с новой строки и отступив от начала строки 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;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами
- Объявление указателей на файлы f1 и f2
- Открытие файла
www.txtв режиме чтения и записи + - Проверка на успешное открытие файла
www.txt, если файл не открылся, то выводится сообщение об ошибке и возвращается 1 - Открытие файла
qqq.txtв режиме записи + - Проверка на успешное открытие файла
qqq.txt, если файл не открылся, то выводится сообщение об ошибке и возвращается 1 - Инициализация переменной newline = 1
- Чтение символа из файла
www.txtи сохранение его в переменную ch - Если переменная newline равна 1, то выводится пробел и символ новой строки
- Символ из файла
www.txtзаписывается в файлqqq.txt - Переменная newline обновляется в зависимости от того, является ли символ точкой, восклицательным или вопросительным знаком
- Если переменная newline равна 1, то выводится символ новой строки
- Закрытие файлов f1 и f2
- Возвращение 0, что означает успешное выполнение программы