Файл: Pobegaylo_A._C_Cplus_dlya_studenta.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.12.2020

Просмотров: 4129

Скачиваний: 28

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Часть III. Стандартная библиотека языка программирования C 

386 

  char p_sign_posn;  /* формат положительного денежного  
    значения: 
    0 — величина и символ денег заключаются в круглые скобки; 
    1 — знак минус предшествует величине и символу денег; 
    2 — знак минус следует после величины и символа денег; 
    3 — знак минус непосредственно предшествует символу денег; 
    4 — знак минус непосредственно следует за символом денег*/ 
  char n_sign_posn;  /* формат положительного денежного  
    значения: 
    0 — величина и символ денег заключаются в круглые скобки; 
    1 — знак плюс предшествует величине и символу денег; 
    2 — знак плюс следует после величины и символа денег; 
    3 — знак плюс непосредственно предшествует символу денег; 
    4 — знак плюс непосредственно следует за символом денег */ 

В  структуре  эти  поля  могут  следовать  в  произвольном  порядке. 
Если  в  поле  типа 

char

  структуры 

lconv

  установлено  значение 

CHAR_MAX

, то это значит, что для данной локализации это поле не 

содержит  смыслового  значения.  Заметим,  что  символическая 
константа 

CHAR_MAX

 определена в заголовочном файле limits.h. 

В  табл. 33.1  приведены  значения  полей  типа 

char

  и  строки,  на 

которые указывают поля типа 

char*

, для локальности 

"C"

, а также 

локальная категория каждого поля. 

Таблица 33.1.

 Форматы числовых данных в локальности 

:"C"

 

Поле структуры 

lconv

 

Значение 

Локальная категория 

currency_symbol 

"" 

LC_MONETARY 

decimal_point 

"." 

LC_NUMERIC 

grouping 

"" 

LC_NUMERIC 

int_curr_symbol 

"" 

LC_MONETARY 

mon_decimal_point 

"" 

LC_MONETARY 

mon_grouping 

"" 

LC_MONETARY 

mon_thousands_sep 

"" 

LC_MONETARY 

negative_sign 

"" 

LC_MONETARY 


background image

Глава 33. Поддержка локализации <locale.h> 

387 

Таблица 33.1

 (окончание) 

Поле структуры 

lconv

 

Значение 

Локальная категория 

positive_sign 

"" 

LC_MONETARY 

thousands_sep 

"" 

LC_NUMERIC 

frac_digits 

CHAR_MAX 

LC_MONETARY 

int_frac_digits 

CHAR_MAX 

LC_MONETARY 

n_cs_precedes 

CHAR_MAX 

LC_MONETARY 

n_sep_by_space 

CHAR_MAX 

LC_MONETARY 

n_sign_posn 

CHAR_MAX 

LC_MONETARY 

p_cs_precedes 

CHAR_MAX 

LC_MONETARY 

p_sep_by_space 

CHAR_MAX 

LC_MONETARY 

p_sign_posn 

CHAR_MAX 

LC_MONETARY 

 

33.5. Определение  
текущих форматов данных 

Для  определения  форматов  числовых  и  денежных  данных,  ис-
пользуемых  в  текущей  локальности,  предназначена  функция 

localeconv

, которая имеет следующий прототип: 

  struct lconv *localeconv(void); 

Эта  функция  всегда  возвращает  указатель  на  структуру  типа 

lconv

,  которая  содержит  требуемые  форматы.  Программа  не 

должна менять поля этой структуры. 
В листинге 33.2 приведен пример использования функции 

lconv

Листинг 33.2. Определение форматов данных  
в текущей локальности 

#include<stdio.h> 
#include<locale.h> 


background image

Часть III. Стандартная библиотека языка программирования C 

388 

int main(void) 

  struct lconv *p; 
 
  p = localeconv(); 
  printf("Decimal point: %s\n", p->decimal_point); 
 
  return 0; 

 


background image

  

 
 

Г Л А В А  

34 

 
 
 

Работа с датами  

и временем <time.h> 

Кроме  типов  данных  и  функций,  используемых  для  обработки 
дат  и  времени,  в  заголовочном  файле  time.h  также  определена 
символическая константа 

NULL

 и тип данных 

size_t

, которые опи-

саны в 

гл. 20

34.1. Арифметические типы  

для представления времени 

Для числового представления количества тактовых или, другими 
словами, синхронизирующих импульсов процессора предназначен 
тип 

clock_t

, который обычно определяется следующим образом: 

  typedef long clock_t; 

Для  числового  представления  календарного  времени  предназна-
чен тип 

time_t

, который обычно определяется следующим обра-

зом: 

  typedef long time_t; 

34.2. Структура для представления 
календарного времени 

Различные  характеристики  календарного  времени  хранятся  в 
структуре типа 

tm

, которая обычно имеет следующий формат: 

  

 


background image

Часть III. Стандартная библиотека языка программирования C 

390 

  struct tm 
  { 
    int tm_sec;   /* секунда минуты - [0,59] */ 
    int tm_min;   /* минута часа - [0,59] */ 
    int tm_hour;  /* час дня - [0,23] */ 
    int tm_mday;  /* день месяца - [1,31] */ 
    int tm_mon;   /* месяц года - [0,11] */ 
    int tm_year;  /* год, начиная с 1900 года */ 
    int tm_wday;  /* день недели - [0,6] */ 
    int tm_yday;  /* день года - [0,365] */ 
    int tm_isdst; /* перевод часов летом на час вперед */ 
  }; 

Значения поля 

tm_isdst

 имеют следующий смысл: 

 

положительное значение указывает на то, что летом часы пе-
реводятся на час вперед; 

 

нулевое значение указывает на то, что летом часы не перево-
дятся; 

 

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

Заметим, что поля структуры типа 

tm

 могут располагаться в про-

извольном  порядке.  Кроме  того,  при  конкретной  реализации 
в структуре 

tm

 могут быть и другие поля. 

34.3. Определение времени работы 

программы 

Для  определения  количества  тактовых  импульсов  процессора, 
сгенерированных  с  начала  работы  программы,  предназначена 
функция 

clock

, которая имеет следующий прототип: 

  clock_t clock(void); 

В  случае  удачного  завершения  функция  возвращает  количество 
тактовых импульсов, сгенерированных процессором с начала ра-
боты программы. Если среда исполнения не подсчитывает коли-
чество  сгенерированных  процессором  тактовых  импульсов,  то 
функция 

clock

 возвращает –1. 


Смотрите также файлы