Mercurial Hosting > scripturereader
diff scripturereader.c @ 0:6e1857de3922
Finished
author | VilyaemKenyaz |
---|---|
date | Fri, 25 Aug 2023 14:14:24 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripturereader.c Fri Aug 25 14:14:24 2023 -0400 @@ -0,0 +1,94 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define PAGE_SIZE 50 + +void print_page(const char* filename, int page_number, int total_pages) { + system("clear"); + printf("---SCRIPTURE-READER---\n"); + FILE* file = fopen(filename, "r"); + if (file == NULL) { + printf("Error opening file: %s\n", filename); + exit(1); + } + + char line[256]; + int line_count = 0; + int current_page = 1; + + while (fgets(line, sizeof(line), file)) { + line_count++; + if (line_count > (page_number - 1) * PAGE_SIZE && line_count <= page_number * PAGE_SIZE) { + printf("%s", line); + } + if (line_count > page_number * PAGE_SIZE) { + break; + } + } + + fclose(file); + + printf("\n--- Page %d of %d ---\n", page_number, total_pages); +} + +int get_total_pages(const char* filename) { + FILE* file = fopen(filename, "r"); + if (file == NULL) { + printf("Error opening file: %s\n", filename); + exit(1); + } + + char line[256]; + int line_count = 0; + + while (fgets(line, sizeof(line), file)) { + line_count++; + } + + fclose(file); + + return (line_count + PAGE_SIZE - 1) / PAGE_SIZE; +} + +int main(int argc, char* argv[]) { + if (argc < 2 || argc > 3) { + printf("ScriptureReader by William @ peepsoftgames.github.io thekenyaz@yandex.com\n"); + printf("Usage:\n"); + printf(" scripturereader <textfile>\n"); + return 1; + } + + const char* filename = argv[1]; + + int total_pages = get_total_pages(filename); + int current_page = 1; + + while (1) { + system("clear"); + print_page(filename, current_page, total_pages); + + char ch; + scanf(" %c", &ch); + switch (ch) { + case 'l': + case 'L': + if (current_page > 1) { + current_page--; + } + break; + case 'r': + case 'R': + if (current_page < total_pages) { + current_page++; + } + break; + case 'q': + case 'Q': + exit(0); + } + } + + exit(0); +} +