locale.h

The header file in the following listing defines a struct containing all the locale-specific values.

Listing: Locale-Specific Values
struct 
lconv {              /* 
"
C
"
 locale (default) */
  char *decimal_point;      
/* "." */ 

  /* Decimal point character to use for non-monetary numbers */

  char *thousands_sep;      
/* "" */ 

  /* Character to use to separate digit groups in 

     the integral part of a non-monetary number. */

  char *grouping;           
/* "\CHAR_MAX" */ 

  /* Number of digits that form a group. CHAR_MAX

     means "no grouping", 
'\0' means take previous

     value.

     for example, the string 
"\3\0" specifies the repeated

     use of groups of three digits. */

  char *int_curr_symbol;   
/* "" */ 

  /* 4-character string for the international

     currency symbol according to ISO 4217. The 

     last character is the separator

     between currency symbol and amount. */

  char *currency_symbol;   
/* "" */ 

  /* National currency symbol. */

  char *mon_decimal_point;  
/* "." */ 

  char *mon_thousands_sep;  
/* "" */ 

  char *mon_grouping;       
/* "\CHAR_MAX" */ 

  /* Same as decimal_point etc., but for monetary numbers. */

  char *positive_sign;      
/* "" */ 

  /* String to use for positive monetary numbers.*/

  char *negative_sign;      
/* "" */ 

  /* String to use for negative monetary numbers. */

  char  int_frac_digits;    
/* CHAR_MAX */ 

  /* Number of fractional digits to print in a

     monetary number according to international format. */

  char  frac_digits;        
/* CHAR_MAX */ 

  /* The same for national format. */

  char  p_cs_precedes;      
/* 1 */ 

  /* 1 indicates that the currency symbol is left

     of a positive monetary amount; 0 indicates it is on the right. */

  char  p_sep_by_space;     
/* 1 */ 

  /* 1 indicates that the currency symbol is

     separated from the number by a space for

     positive monetary amounts. */

  char  n_cs_precedes;      
/* 1 */ 

  char  n_sep_by_space;     
/* 1 */ 

  /* The same for negative monetary amounts. */

  char  p_sign_posn;        
/* 4 */ 

  char  n_sign_posn;        
/* 4 */ 

  /* Defines the position of the sign for positive

     and negative monetary numbers:

     0  amount and currency are in parentheses

     1  sign comes before amount and currency

     2  sign comes after the amount

     3  sign comes immediately before the currency

     4  sign comes immediately after the currency */

};

Use one of several constants in setlocale() to define which part of the locale to set. Refer the following table.

Table 1. Constants Used with setlocale()
Constant Description
LC_ALL Changes the complete locale.
LC_COLLATE Only changes the locale for functions strcoll() and strxfrm().
LC_MONETARY Changes the locale for formatting monetary numbers.
LC_NUMERIC Changes the locale for numeric (non-monetary) formatting.
LC_TIME Changes the locale for function strftime().
LC_TYPE Changes the locale for character handling and multiple-byte character functions.

This implementation only supports the minimum C locale.