Как вывести ровную таблицу в консоли с++?

551
12 сентября 2017, 09:34

Помогите с лабой пожалуйста: учим С, и эта прога должна выводить ровную табличку в консоли, но у меня вместо русских символов оркские и сама таблица кривая (может из-за оркских символов). Вот код, запускаю через Visual Studio 2017:

#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "locale.h" 
int main()
{
    char computer1[10], computer2[10], computer3[10];
    char type1, type2, type3, ram1, ram2, ram3;
    float frq1, frq2, frq3;
    /* Введение фактических данных*/
    setlocale(LC_ALL, "Russian");
    printf("1. Введите: процессор, Частоту, RAM, тип >");
    scanf("%s %f %c %c",computer1, &frq1, &ram1, &type1);
    printf("2. Введите: процессор, Частоту, RAM, тип >");
    scanf("%s %f %c %c",computer2, &frq2, &ram2, &type2);
    printf("3. Введите: процессор, Частоту, RAM, тип >");
    scanf("%s %f %c %c",computer3, &frq3, &ram3, &type3);
    /* Вывод таблицы */
    /* вывод заголовков */
    printf("|---------------------------------------------|\n");
    printf("|Характеристики ПЭВМ                          |\n");
    printf("|---------------------------------------------|\n");
    printf("| Процессор   | Частота (Mgz) | RAM(Mb)   |Тип|\n");
    printf("|-------------|---------------|-----------|---|\n");
    /* вывод строк фактических данных */
    printf("| %10s | %f| %-3d | %c|\n", computer1, frq1, ram1, type1);
    printf("| %10s | %f| %-3d | %c|\n", computer2, frq2, ram2, type2);
    printf("| %10s | %f| %-3d | %c|\n", computer3, frq3, ram3, type3);
    /* вывод примечаний */
    printf("|---------------------------------------------|\n");
    printf("| Тип: C-CISC-процессор, R-RISC-процессор     |\n");
    printf("|---------------------------------------------|\n");
    system("pause");
    return 0;
}
Answer 1

Вся проблема в стандартном терминале Windows - он не умеет в нормальные кодировки. Более-менее приличное решение есть тут и тут (я не проверял работоспособность, но выглядит правдоподобно). Другой вариант - использовать powershell, там можно задавать кодировки на входной и выходной потоки, но это требует чуть ли не прав администратора. Этот вариант я пробовал - работает, но подробностей не помню.

READ ALSO
Пропорциональное изменение размеров окна

Пропорциональное изменение размеров окна

Как в winapi изменять размер окна сразу по x и y координатам (те

260
Передвижение по элементам внутри for

Передвижение по элементам внутри for

В си-подобных языках предоставляется возможность определить изменение переменной в объявлении for, а далее в самом цикле изменять её значениеПример...

297
добавить recaptcha к валидации

добавить recaptcha к валидации

Есть функция валидации формы обратной связиВыгляди так:

263
Как стилизовать этот input?

Как стилизовать этот input?

Думаю что дело в скрипте

229