Читаем Linux программирование в примерах полностью

    0 Количество и int_curr_symbol окружены скобками.

    1 Строка знака до количества и int_curr_symbol.

    2 Строка знака после количества и int_curr_symbol.

    3 Строка знака непосредственно до int_curr_symbol.

    4 Строка знака непосредственно после int_curr_symbol. */

 char int_p_sign_posn;

 char int_n_sign_posn;

};

Комментарии показывают довольно ясно, что происходит. Давайте посмотрим на несколько первых полей struct lconv:

decimal_point

Используемый символ разделителя десятичной дроби. В Соединенных Штатах и других англоязычных странах это точка, но во многих странах используется запятая.

thousands_sep

Символ, используемый для разделения каждых 3 цифр значения.

grouping

Массив однобайтных целых значений. Каждый элемент указывает, сколько цифр в группе. Как сказано в комментарии, CHAR_MAX означает, что дальше группировка не используется, а 0 означает повторное использование последнего элемента (Далее в главе мы покажем пример кода.)

int_curr_symbol

Это международный символ для местной валюты. Например, 'USD' для доллара США.

currency_symbol

Локальный символ для местной валюты. Например, $ для доллара США.

mon_decimal_point, mon_thousands_sep, mon_grouping

Соответствуют предыдущим полям, предоставляя те же сведения, но для денежных сумм.

Большая часть оставшихся значений не имеет значения для повседневного программирования. Следующая программа, ch13-lconv.c, выводит некоторые из этих значений, чтобы дать вам представление, для какого рода сведений они используются:

/* ch13-lconv.c --- показывает некоторые компоненты struct lconv */

#include

#include

#include

int main(void) {

 struct lconv l;

 int i;

 setlocale(LC_ALL, "");

 l = *localeconv();

 printf("decimal_point = [%s]\n", l.decimal_point);

 printf("thousands_sep = [%s]\n", l.thousands_sep);

 for (i = 0; l.grouping[i] != 0 && l.grouping[i] != CHAR_MAX; i++)

  printf("grouping[%d] = [%dj\n", i, l.grouping[i]);

 printf("int_curr_symbol = [%s]\n", l.int_curr_symbol);

 printf("currency_symbol = f%s]\n", l.currency_symbol);

 printf("mon_decimal_point = f%s]\n", l.mon_decimal_point);

 printf("mon_thousands_sep = [%s]\n", l.mon_thousands_sep);

 printf("positive_sign = [%s]\n", l.positive_sign);

 printf("negative_sign = [%s]\n", l.negative_sign);

}

Неудивительно, при запуске в различных локалях мы получаем различные результаты.

$ LC_ALL=en_US ch13-lconv /* Результаты для Соединенных Штатов */

decimal_point = [.]

thousands_sep = [,]

grouping[0] = [3]

grouping[1] = [3]

int_curr_symbol = [USD ]

currency_symbol = [$]

mon_decimal_point = [.]

mon_thousands_sep = [,]

positive_sign = []

negative_sign = [-]

$ LC_ALL=it_IT ch13-lconv /* Результаты для Италии */

decimal_point = [.]

thousands_sep = []

int_curr_symbol = []

currency_symbol = []

mon_decimal_point = []

mon_thousands_sep = []

positive_sign = []

negative_sign = []

Обратите внимание, что значение int_curr_symbol в локали "en_US" включает завершающий символ пробела, который служит для отделения символа от последующего денежного значения.

<p>13.2.5. Высокоуровневое числовое и денежное форматирование: <code>strfmon()</code> и <code>printf()</code></p>

После рассмотрения всех полей struct lconv вы можете поинтересоваться: «Нужно ли мне на самом деле выяснять, как использовать все эти сведения, просто для форматирования денежного значения?» К счастью, ответом является «нет».[140] Функция strfmon() делает за вас всю работу:

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

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных