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