👀 📔 читать онлайн » Компьютеры и Интернет » Программирование » 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
Строка, представляющая положительный и отрицательный ответы.
Перейти на страницу:
Оставить комментарий о книге
Подтвердите что вы не робот:*

Отзывы о книге "Linux программирование в примерах, автор: Роббинс Арнольд":

Все материалы на сайте размещаются его пользователями. Администратор сайта не несёт ответственности за действия пользователей сайта. Вы можете направить вашу жалобу на почту booksreadonlinecom@gmail.com
© 2021 - 2025 booksread-online.com