Разбить текст на страницы - C (СИ)
Формулировка задачи:
Прошу помощи в решении задачи.
Дан текстовый файл.Преобразовать его, разбив текст на страницы и пронумеровав их, причем номер нечетной страницы должен размещаться в правом нижнем углу, а номер четной страницы - в ее левом нижнем углу. Число стока странице задается, а ширина страницы определяется самой длинной строкой в данной странице. Конец страницы отмечается символом с кодом 12, который помещается в отдельной строке.
Заранее благодарен.
Решение задачи: «Разбить текст на страницы»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main() { int page, k, maxlen, n; char text[200]; printf ("Введите кол-во строк на странице:"); scanf("%d", &n); FILE *file = fopen("in.txt", "rt"); FILE *out = fopen("out.txt", "wt"); page = 1; k = 0; maxlen = 0; while (!feof(file)) { fgets(text, 200, file); k++; int len = strlen(text)-1; if (len > maxlen) { maxlen = len; } fputs(text, out); if (feof(file)) { for (; k != n; k++) { fputc('\n', out); } } if (k == n) { if (page % 2 == 0) { fprintf(out, "%d \n", page); } else { char str[10]; sprintf(str, "%c%dd\n", '%', maxlen); fprintf(out, str, page); } fprintf(out, "12 \n"); page++; maxlen = 0; k = 0; } } printf ("Текст разбит на страницы =)"); fclose(out); fclose(file); }
Объяснение кода листинга программы
- Объявлены переменные:
- page - номер текущей страницы
- k - счётчик строк на текущей странице
- maxlen - максимальная длина строки на текущей странице
- n - количество строк на странице
- text - массив для чтения текста из файла
- file - указатель на файл с исходным текстом
- out - указатель на файл для записи разбитого текста
- Пользователю предлагается ввести количество строк на странице.
- Открываются файлы in.txt и out.txt для чтения и записи соответственно.
- Переменная page инициализируется значением 1.
- Цикл while с условием !feof(file) читает текст из файла по строкам и записывает каждую строку в файл out.txt.
- Переменная k увеличивается на 1 после каждой прочитанной строки.
- Если длина текущей строки больше maxlen, то maxlen обновляется значением длины текущей строки.
- Если текущая страница заполнена (k == n), то:
- Если номер текущей страницы четный, то в файл out.txt записывается номер текущей страницы.
- Иначе, в файл out.txt записывается строка, содержащая номер текущей страницы в виде символа '%' и номера страницы в 10-тичном формате.
- Записывается строка
12
в файл out.txt. - Увеличивается значение переменной page на 1.
- Устанавливается maxlen равным 0.
- Устанавливается k равным 0.
- Цикл while завершается, когда достигнут конец файла.
- Выводится сообщение о том, что текст разбит на страницы.
- Файлы out.txt и file закрываются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д