Для чего нужен формат «%lc» в printf?

Здравствуйте.
Если написать такую программу:
#include <stdio.h>// test
int				main(void)
{
	printf("%lc\n", L'€');
	return (0);
}


То printf не чего не выведет, а для чего флаг 'l' вообще нужен, как он работает в контексте с 'c'?
Проверял в Mac os и Windows.

UPD
Если быть точнее я пишу свой printf и почитав про printf понял, что "%lc" позволяет вставлять в однобайтовую строку многобайтовый символ, но что то как показала практика printf не так работает.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@lorc
Потому что функция wcrtomb не знает в какую кодировку нужно превратить ваш символ. Правильное решение - вызвать setlocale:


On startup of the main program, the portable "C" locale is selected as default. A program may be made portable to all locales by calling:

setlocale(LC_ALL, "");


Это настроит локаль вашего приложения согласно окружению. Это более правильный и переносимый вариант того, что предложил @sergey-gornostaev

Вот пример.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега C
Седой и строгий
Во-первых, нужно чтобы консоль понимала "широкие" символы. По умолчанию консоль Windows использует однобайтовую кодировку cp866, в которой символа "€" просто нет. Во-вторых, setlocale(LC_ALL, "") перед выводом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Кликнет Санкт-Петербург
До 150 000 ₽
Eltex Новосибирск
от 80 000 ₽
IT Force Краснодар
от 130 000 до 200 000 ₽