LINUX.ORG.RU
Ответ на: комментарий от schizoid
#include <ncurses.h>
#include <locale.h>

int main()
{
        initscr();
        setlocale(LC_ALL, "ru_RU.UTF-8");
        int mess[] = L"Привет\n";
        for(int i=0; i<6; i++)
                add_wch(mess[i]);
        getch();
        endwin();
        return 0;
}

Компилю:

gcc new.c -lncursesw -std=c99 -onewc
Выдает:
new.c:10:3: warning: implicit declaration of function ‘add_wch’ [-Wimplicit-function declaration]
при запуске ошибка сегментирования :(

Aswed ★★★★★
() автор топика

Лучше обойтись без кириллицы, если можно.

buddhist ★★★★★
()

Можешь скармливать обычные utf-8 строки, современный Linux-терминал поймёт, главное не забыть про локаль. А вот с пользовательским вводом придётся немного повозиться, так как он опять же будет в utf-8, в результате чего потребуется несколько вызовов getch() для получения одного символа.

#include <curses.h>
#include <locale.h>

int
main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");

    initscr();
    nonl();
    cbreak();

    addstr("Прощай война!");
	
    getch();

    endwin();

    return 0;
}

И да, ни в коем случае не пытайся выводить цветной текст побайтово — выйдет полная фигня.

Zveroy
()
23 июля 2012 г.
Ответ на: комментарий от ananas

gcc new.c -lncursesw -std=c99 -D_XOPEN_SOURCE_EXTENDED -onewc

О! Хлам заполонил интернеты и ЛОР в частности. Но сей коммент реально помог: там в заголовках хрен разберёшь какая комбинация #define'ов нужна, чтобы заголовки заработали в wide-character режиме. Только не пойму, что такое -onewc.

Да, а всем доказующим необходимость отказа от кириллицы в консоле и, заодно, от ncurses, я бы предложил, всё же, не демонстрировать почём зря свои интеллектуальные «способности» и «огромные» познания. Ибо не только кириллица становится доступна при использовании wchar_t, но так же и горы ACS символов, а printw, требующий refresh впоследствии, существенно резче, нежели printf. Даже если на stdout воткнуть full буферизацию, всё равно printw, подчастую, оказывается быстрее. И удобнее, поскольку не надо парится вручную разбирать termcap, на предмет того, какие esc-последовательности поддерживаются терминалом.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.