1 Востаннє редагувалося Діма (06.07.2016 21:30:37)

Тема: Сі робота з консоллю

Вітаю
Навчаюсь писати консольні програми на Сі

#include <windows.h>
#include <locale.h>

main()
{
    /*windows.h*/
    SetConsoleTitle ("NameWind");     //Назва в заголовку консольного вікна
    SetConsoleCP(866);             //Встановлює таблицю ASCII станндарту cp866 Unicode в поток введення
    SetConsoleCP(1251);         //Встановлює таблицю ASCII станндарту cp1251 Unicode в поток введення
    SetConsoleOutputCP(866);    //Встановлює таблицю ASCII станндарту cp1251 Unicode в поток виведення
    SetConsoleOutputCP(1251);    //Встановлює таблицю ASCII станндарту cp1251 Unicode в поток виведення
    
    system("mode con cols=100 lines=35");     //Встановлює прозмірність консольного вікна
    system("color 0F");                //Змінює колір консолі перше число це фон друге текст
    
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); //    ???
    SetConsoleTextAttribute(hStdOut, 0xFB);    //встановлює колір тексту і фону який буде друкуватись
    printf("текст 0xFB\n");
    SetConsoleTextAttribute(hStdOut, 0xF5);
    printf("текст 0xF5\n");    
    SetConsoleTextAttribute(hStdOut, 0xB8);
    printf("текст 0xB8\n");    
    SetConsoleTextAttribute(hStdOut, 0x69);    
    printf("текст 0x69\n");
    SetConsoleTextAttribute(hStdOut, 0x0F);    
    
    /*locale.h*/    
    setlocale(LC_CTYPE, "ukr");                //   ???
}

які ще є команди щоб встановлювати параметри виводу і вигляду консолі? як наприклад змінити шрифт на піксельний? чи друкувати якесь слово курсивом чи жирним? як змінити піктограму перед назвою файла на якусь свою?

і ще, як на чистому Сі прибрати курсор? знайшов приклади тільки на С++...

маленька програмка яка виводить всю кольорову гамуу консолі і таблицю ASCII кодів
#include <windows.h>

main()
{
    int i=0,s=0,z=0;
    system("mode con cols=154 lines=57");
    
    int y=16,x=16;
    int Q[y][x];
    for(i=0;i<x;i++)
    {
        for(s=0;s<y;s++)
        {
            Q[s][i]=z;
            z++;
        }
    }
        
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    
    printf("%c",218);
    for(i=0;i<150;i++)
    {
        printf("%c",196);
    }
    printf("%c\n",191);
    
    for(i=0;i<y;i++)
    {
        printf("%c   ",179);
        for(s=0;s<x;s++)
        {
            SetConsoleTextAttribute(hStdOut, Q[i][s]);
            printf("   %x    ", Q[i][s]);
        //    printf("%i",Q[i][s]);
        }
        SetConsoleTextAttribute(hStdOut, 0x0F);
        printf("    %c",179);
        printf("\n");
    }
                
    printf("%c",192);
    for(i=0;i<150;i++)
    {
        printf("%c",196);
    }
    printf("%c\n",217);    

//-------------------------------------------------------------//

    SetConsoleOutputCP(866);
    int c=0,v=0;
    i=0,s=0;
    int b=33;
    
            printf("%c",218);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",191);
            printf("\n%c ASCII cp1251",179);
            for(i=0;i<137;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);        
            for(i=0;i<149;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);
    
    SetConsoleOutputCP(1251);
    do{
        SetConsoleTextAttribute(hStdOut, 0x6);
        printf(" %i  ",b);
        SetConsoleTextAttribute(hStdOut, 0xB);
        printf("%c   ",b);
        SetConsoleTextAttribute(hStdOut, 0x0F);
        ++b;
        ++c;
        ++v;
        if(v==15)
            {
                SetConsoleOutputCP(866);
                printf("%c\n%c",179,179);
                v=0;
                SetConsoleOutputCP(1251);
            }
        if(b<100)
            {
                printf(" ");
                
            }
    }
    while(c!=223);
    SetConsoleOutputCP(866);

            printf("                    %c\n",179);    
            printf("%c",192);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",217);    
            printf("\n");
            
//--------------------------------------------------------------//
            
            printf("%c",218);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",191);
    
    c=v=s=0;b=33;

            printf("\n%c ASCII cp866 ",179);        
            for(i=0;i<137;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);
            for(i=0;i<149;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);
    
    do
    {
        SetConsoleTextAttribute(hStdOut, 0x6);
        printf(" %i  ",b);
        SetConsoleTextAttribute(hStdOut, 0xB);
        printf("%c   ",b);
        SetConsoleTextAttribute(hStdOut, 0x0F);
        ++b;
        ++c;
        ++v;
        if(v==15)
            {
                printf("%c\n%c",179,179);
                v=0;
            }
        if(b<100)
            {
                printf(" ");
                
            }
    }
    while(c!=223);
    
            printf("                    %c\n",179);    
            printf("%c",192);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",217);
    
    printf("\n");

    system("pause");
}
Подякували: leofun011

2

Re: Сі робота з консоллю

Друкувати курсивом чи жирним в консолі ніяк не вийде.
Змінити піктограму програми, яку ви компілюєте, можна в налаштуваннях проекту. Якщо хочете детальніше, напишіть в якому середовищі компілюєте.
Прибрати курсор можна по різному, багато залежить від ОС.

Подякували: Діма1