Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2022, 21:36   #1
DianaPau
Новичок
Джуниор
 
Регистрация: 23.11.2022
Сообщений: 3
По умолчанию Вывод данных из файла по страницам

Есть файл с текстом (русский+английский), хотелось бы сделать, чтобы можно было выводить по страницам (вперед/назад)
У меня получилось что-то такое на Си, но не работает
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>

HANDLE hConsole;
WORD saved_attributes, reversed_attributes;

int psk(char *);

void
spec_print(const char *s)
{
    SetConsoleTextAttribute(hConsole, reversed_attributes);
    printf("%s", s);
    SetConsoleTextAttribute(hConsole, saved_attributes);
}

int main()
{
    system("cls");
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
    GetConsoleScreenBufferInfo(hConsole, &consoleInfo);
    saved_attributes = consoleInfo.wAttributes;
    reversed_attributes = ((saved_attributes & 0x0F) << 4) + ((saved_attributes & 0xF0) >> 4);
    FILE *f1,*f2;
    char c, l, s, str[300], file1[1024], file2[1024], list[1920], txt[1920];
    int len=0, cnt=0, fl=0;
    printf("Enter name file 1: ");
    gets(file1);
    if(((f1=fopen(file1,"r"))==NULL))
    {
        printf("Error opening file");
        return 1;
    }
    printf("Enter name file 2: ");
    gets(file2);
    if(((f2=fopen(file2,"w"))==NULL))
    {
        printf("Error opening file");
        return 1;
    }
    do
    {
        c = fgetc(f1);
        if(c==EOF)
        {
            *(str+len) = (c=='.')?'.':' ';
            *(str+len+1)='\0';
            if(psk(str))
            {
                fprintf(f2,"%s",str);
                if (cnt>=0&&cnt<24)
            cnt++;
        else if (cnt==24)
        {
            spec_print("q");
            printf(" Quit ");
            spec_print("SPACE");
            printf(" ");
            spec_print("f");
            printf(" Next Page ");
            spec_print("b");
            printf(" Back Page ");
            while(fl)
            {
                fl=0;
                s=getch();
                switch (s)
                {
                case ' ':
                case 'f':
                case 'F':
                    cnt=1;
                    break;
                case 'b':
                case 'B':
                    cnt=0;
                    break;
                case 'q':
                case 'Q':
                    printf("\n");
                    return 1;
                default:
                    fl=1;
                }
            }
        }
                printf("%s",str);
            }
            len=0;
        }
        else
        {
            *(str+len)=c;
            len++;
        }
    }
    while(c!=EOF);
    fclose(f1);
    fclose(f2);
    return 0;
}
int psk(char *str)
{
    int i=0;
    while(str[i]!='\0')
    {
        i++;
    }
    return 1;
}

Последний раз редактировалось DianaPau; 25.11.2022 в 23:04.
DianaPau вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос_разделение по страницам+название файла по первой строке Heleno4ka Microsoft Office Word 3 24.04.2018 14:21
Распределение данных из файлов по страницам в новой книге ff0000 Microsoft Office Excel 0 14.11.2017 07:41
Вывод информации по страницам andrewsereda Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2013 03:43
Вывод данных из файла Desha Помощь студентам 3 04.11.2009 18:38