`
Читать книги » Книги » Компьютеры и Интернет » Интернет » Linux программирование в примерах - Роббинс Арнольд

Linux программирование в примерах - Роббинс Арнольд

Перейти на страницу:

 time_t now;

 struct tm *curtime;

 setlocale(LC_ALL, "");

 time(&now);

 curtime = localtime(&now);

 (void)strftime(buf, sizeof buf,

  "It is now %A, %B %d, %Y, %I:%M %p", curtime);

 printf("%sn", buf);

 printf("ctime() says: %s", ctime(&now));

 exit(0);

}

При запуске программы мы видим, что результаты strftime() в самом деле варьируют, тогда как результаты ctime() — нет:

$ <b>LC_ALL=en_US ch13-times</b> /* Время в Соединенных Штатах */

It is now Friday, July 11, 2003, 10:35 AM

ctime() says: Fri Jul 11 10:35:55 2003

$ <b>LC_ALL=it_IT ch13-times</b> /* Время в Италии */

It is now venerdi, luglio 11, 2003, 10:36

ctime() says: Fri Jul 11 10:36:00 2003

$ <b>LC_ALL=fr_FR ch13-times</b> /* Время во Франции */

It is now vendredi, juillet 11, 2003, 10:36

ctime() says: Fri Jul 11 10:36:05 2003

Причина отсутствия изменений в том, что ctime() (и asctime(), на которой основана ctime()) является традиционным интерфейсом; он существует для поддержки старого кода, strftime(), будучи более новым интерфейсом (первоначально разработанным для C89), свободен использовать локали.

13.2.8. Другие данные локали: nl_langinfo()

Хотя ранее мы сказали, что API catgets() трудно использовать, одна часть этого API обычно полезна: nl_langinfo(). Она предоставляет дополнительные связанные с локалью сведения, помимо тех, которые доступны из struct lconv:

#include &lt;nl_types.h&gt;

#include &lt;langinfo.h&gt;

char *nl_langinfo(nl_item item);

Заголовочный файл &lt;nl_types.h&gt; определяет тип nl_item. (Это скорее всего int или enum.) Параметр item является одной из именованных констант, определенных в &lt;langinfo.h&gt;. Возвращаемое значение является строкой, которую можно при необходимости использовать либо непосредственно, либо в качестве форматирующей строки для strftime().

Доступная информация поступает из нескольких категорий локали. В табл. 13.3 перечислены константы элементов, соответствующие категории локали и их значения.

Таблица 13.3. Значения элементов для nl_langinfo()

Элемент Категория Значение ABDAY_1, …, ABDAY_7 LC_TIME Сокращенные названия дней недели. Воскресенье является днем 1 ABMON_1, …, ABMON_12 LC_TIME Сокращенные названия месяцев ALT_DIGITS LC_TIME Альтернативные символы для цифр; см. текст AM_STR, PM_STR LC_TIME Обозначения a.m/p.m. для локали. CODESET LC_TYPE Имя кодовой страницы для локали, т.е. использующиеся набор символов и кодировка CRNCYSTR LC_MONETARY Символ местной валюты, описанный ниже DAY_1, …, DAY_7 LC_TIME Названия дней недели. Воскресенье является днем 1 D_FMT LC_TIME Формат даты D_T_FMT LC_TIME Формат даты и времени ERA_D_FMT LC_TIME Формат даты эры. ERA_D_T_FMT LC_TIME Формат даты и времени эры. ERA_T_FMT LC_TIME Формат времени эры. ERA LC_TIME Сегменты описания эры, см. текст. MON_1, …, MON_12 LC_TIME Названия месяцев. RADIXCHAR LC_NUMERIC Символ системы счисления. Для базы 10 это символ точки в десятичной дроби. THOUSEP LC_NUMERIC Символ-разделитель тысяч T_FMT_AMPM LC_TIME Формат времени в записи a.m/p.m. T_FMT LC_TIME Формат времени. YESEXPR, NOEXPR LC_MESSAGES Строка, представляющая положительный и отрицательный ответы.
Перейти на страницу:

Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Linux программирование в примерах - Роббинс Арнольд, относящееся к жанру Интернет. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.

Комментарии (0)