Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Интернет » Linux программирование в примерах - Роббинс Арнольд

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 192 193 194 195 196 197 198 199 200 ... 253
Перейти на страницу:

 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 Строка, представляющая положительный и отрицательный ответы.
1 ... 192 193 194 195 196 197 198 199 200 ... 253
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Linux программирование в примерах - Роббинс Арнольд.
Комментарии