Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
HofD Можно так:
Код:
SetConsoleOutputCP(1251); printf("Вот это по русски\n");
вырезка из MSDN:
Цитата:
... if the current font is a raster font, SetConsoleOutputCP does not effect how extended characters are displayed...
Т.е. надо в настройках консольного окна выбрать не растровый фонт, а Lucida Console (у меня, например, там тока растр. и Lucida). При смене фонта будет предложен вариант использовать настройку для всех окон с таким же именем - вот это нам и надо.
Другой вариант:
Код:
char out[20]; CharToOem("Но это как-то не удобно\n",out); printf(out);
Member
Статус: Не в сети Регистрация: 04.01.2005 Откуда: Москва
mein Да, первый вариант работает, но это не удобно, т.к. действовать не на любом компе будет, а второй вариант почему то не компилирует, ругается что не может char[25] в LPCWSTR перевести. Может еще как можно? Я где-то читал, что для этого служит _TCHAR* из int _tmain(int argc, _TCHAR* argv[]) (что-то там о Unicode)......
_________________ Win XP - если бы не этот отстой, то сидели бы сейчас в DOS...
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
HofD
Цитата:
Да, первый вариант работает, но это не удобно, т.к. действовать не на любом компе будет
Я обычно для себя консольные пишу . Может возможно как-то делать это программно ?!
Кстати есть ещё третий вариант: писать в 866 кодировке сразу. Единственная проблема в виндувозных редакторах (шрифт Terminal вроде решение), но работает зато железно и ничего не надо делать. А писать сам текст можно в любом текстовом приложении - я например DN (win32) использую.
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
HofD
Цитата:
А никак нельзя обойтись без обьявления массива и последующей записи строки а потом только вывода на экран?
Да поидее можно написать свою фунцию где приниматся будет "русский текст" , а возвращатся указатель. Правда указатель на что?! Можно глобальную переменную завести например для этого. А может как-то ещё? Я в этом вопросе не очень как-то
Member
Статус: Не в сети Регистрация: 19.04.2005 Откуда: Москва
mein писал(а):
Правда указатель на что?!
Например, на выделенную динамическую память, которую надо будет потом освободить? В принципе, тоже вариант, но если забыть освободить, будет утечка...
Глобальную переменную тоже можно (равно как и статический массив внутрях той функции-конвертера - тогда он будет жив и после выхода из функции), но в таком случае не удастся работать одновременно с двумя строками: одна будет перезатирать другую.
_________________ Почему же, ё-моё, ты нигде не пишешь "ё"?
Member
Статус: Не в сети Регистрация: 13.11.2004 Откуда: Новосибирск
Есть проблема. Создаю глобально массив (double jm[40][40][6]; ), в одной функции изменяю значения его элементов, при этом они точно не нулевые (проверял сразу через printf("%f, %f, %f \n",jm[h][fi][0],jm[h][fi][1],jm[h][fi][2]); ). В другой функции обращаюсь к значениям массива, но массив оказывается заполнен нулями. В чем причина?
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
qasz НУ и код? Ну кто же так пишет? ужастики 8(((
А вывод программы можно
у тебя должны быть заполнены эелемнты [1...21][1..3..5...21][1...5]
Разве не так?
А вообще где тут все нули?
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Member
Статус: Не в сети Регистрация: 13.11.2004 Откуда: Новосибирск
nickyoz, Ray Adams, сначала там был цикл while, но он не работал, как и for не работает сейчас (fi++ и h++ прсто забыл убрать, когда копировал). Без инкремента printf в первом и втором случае выводит на экран разные числа . PS nickyoz, че правда так некрасиво написано?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения