Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: C - что функция aswprintf нету.  (Прочитано 552 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн victor00000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
C - что функция aswprintf нету.
« : 18 Сентября 2018, 20:20:19 »
man asprintf
это char, a wchar_t внизу.
я задумал получилось.
#include "z.h"
#include <stdarg.h>
#include <locale.h>

int aswprintf (wchar_t **wc, const wchar_t *wfmt,...){
FILE *fnl =
fopen ("/dev/null","w");
va_list ap;
va_start ( ap, wfmt );
int l = vfwprintf (fnl,wfmt,ap);
va_end ( ap );
*wc = malloc (sizeof (wchar_t)*(l+1));
fclose (fnl);
va_start ( ap, wfmt );
l = vswprintf (*wc,l+1,wfmt,ap);
va_end ( ap );
return l;
}

int main (){
setlocale (LC_ALL,getenv("LANG"));
wchar_t *wc;
int l = aswprintf (&wc,L"%hs %ls","A",L"я был.");
printf ("%d. %ls\n",l,wc);
free (wc);
return 0;
}
вывод
8. A я был.
Wars ~.o

 

Страница сгенерирована за 0.026 секунд. Запросов: 25.