printf выводит кракозябры
В соседней функции выводит нечто:
HPDF_Page_TextOut (page, 10, height - 40, datetime);
// Вывод
H옾 @
Вот код функции, которая генерирует дату/время:
int datetime(void)
{
setlocale(LC_ALL, ".UTF-8");
time_t t;
time(&t);
printf("%s\n", ctime(&t));
return 0;
}
Если закавычить setlocale(LC_ALL, ".UTF-8");
, то выводит:
H예|$袻H|$蘻HǨ
:)
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
В коде HPDF_Page_TextOut (page, 10, height - 40, datetime)
функция datetime
не вызывается. Указатель на функцию передаётся в качестве строки для печати. Вы печатаете код функции до первого нуля в нём. Когда вы "кавычите" строку, вы меняете код и меняете то что попадает в PDF.
Вызов datetime()
ситуацию не исправит. Функция должна возвращать строку, а она возвращает целое число ноль.
Исправить можно так:
const char *datetime(void)
{
time_t t;
time(&t);
char *s = ctime(&t);
s[strlen(s) - 1] = '\0'; /* remove trailing '\n' */
return s;
}
...
HPDF_Page_TextOut(page, 10, height - 40, datetime())