LOCALECONV(3C)          Standard C Library Functions          LOCALECONV(3C)
NAME
       localeconv, localeconv_l - get numeric formatting information
SYNOPSIS
       #include <locale.h>       
struct lconv *localeconv(
void);
       #include <xlocale.h>       
struct lconv *localeconv_l(
locale_t locR);DESCRIPTION
       The 
localeconv() and 
localeconv_l() functions set the components of
       an object with type 
struct lconv (defined in 
<locale.h>) with locale-
       specific values appropriate for the formatting of numeric quantities
       (monetary and otherwise).  The 
localeconv() function uses the current
       locale (see 
setlocale(3C) and 
uselocale(3C)), while 
localeconv_l uses
       the locale identified by the argument 
loc.  The definition of 
struct       lconv is given below (the values for the fields in the "C" locale are
       given in comments).
         char *decimal_point;        /* "." */
         char *thousands_sep;        /* "" (zero length string) */
         char *grouping;             /* "" */
         char *int_curr_symbol;      /* "" */
         char *currency_symbol;      /* "" */
         char *mon_decimal_point;    /* "" */
         char *mon_thousands_sep;    /* "" */
         char *mon_grouping;         /* "" */
         char *positive_sign;        /* "" */
         char *negative_sign;        /* "" */
         char int_frac_digits;       /* CHAR_MAX */
         char frac_digits;           /* CHAR_MAX */
         char p_cs_precedes;         /* CHAR_MAX */
         char p_sep_by_space;        /* CHAR_MAX */
         char n_cs_precedes;         /* CHAR_MAX */
         char n_sep_by_space;        /* CHAR_MAX */
         char p_sign_posn;           /* CHAR_MAX*/
         char n_sign_posn;           /* CHAR_MAX */
       The following members are also available to SUSv3-conforming
       applications. See 
standards(7)         char int_p_cs_precedes;     /* CHAR_MAX */
         char int_p_sep_by_space;    /* CHAR_MAX */
         char int_n_cs_precedes;     /* CHAR_MAX */
         char int_n_sep_by_space;    /* CHAR_MAX */
         char int_p_sign_posn;       /* CHAR_MAX */
         char int_n_sign_posn;       /* CHAR_MAX */
       The members of the structure with type 
char * are strings, any of
       which (except 
decimal_point) can point to a null string (""), to
       indicate that the value is not available in the current locale or is
       of zero length. The members with type 
char are non-negative numbers,
       any of which can be 
CHAR_MAX (defined in the 
<limits.h> header) to
       indicate that the value is not available in the current locale. The
       members are the following:       
char *decimal_point                                  The decimal-point character used to format
                                  non-monetary quantities.       
char *thousands_sep                                  The character used to separate groups of
                                  digits to the left of the decimal-point
                                  character in formatted non-monetary
                                  quantities.       
char *grouping                                  A string whose elements taken as one-byte
                                  integer values indicate the size of each
                                  group of digits in formatted non-monetary
                                  quantities.       
char *int_curr_symbol                                  The international currency symbol
                                  applicable to the current locale. The
                                  first three characters contain the
                                  alphabetic international currency symbol
                                  in accordance with those specified in the
                                  ISO 4217: 1995 standard. The fourth
                                  character (immediately preceding the null
                                  byte) is the character used to separate
                                  the international currency symbol from the
                                  monetary quantity.       
char *currency_symbol                                  The local currency symbol applicable to
                                  the current locale.       
char *mon_decimal_point                                  The decimal point used to format monetary
                                  quantities.       
char *mon_thousands_sep                                  The separator for groups of digits to the
                                  left of the decimal point in formatted
                                  monetary quantities.       
char *mon_grouping                                  A string whose elements taken as one-byte
                                  integer values indicate the size of each
                                  group of digits in formatted monetary
                                  quantities.       
char *positive_sign                                  The string used to indicate a non-
                                  negative-valued formatted monetary
                                  quantity.       
char *negative_sign                                  The string used to indicate a negative-
                                  valued formatted monetary quantity.       
char int_frac_digits                                  The number of fractional digits (those to
                                  the right of the decimal point) to be
                                  displayed in an internationally formatted
                                  monetary quantity.       
char frac_digits                                  The number of fractional digits (those to
                                  the right of the decimal point) to be
                                  displayed in a formatted monetary
                                  quantity.       
char p_cs_precedes                                  Set to 1 or 0 if the 
currency_symbol                                  respectively precedes or succeeds the
                                  value for a non-negative formatted
                                  monetary quantity.       
char p_sep_by_space                                  Set to 0 if no space separates the                                  
currency_symbol or 
int_curr_symbol from
                                  the value for a non-negative formatted
                                  monetary quantity. Set to 1 if a space
                                  separates the symbol from the value; and
                                  set to 2 if a space separates the symbol
                                  and the sign string, if adjacent.       
char n_cs_precedes                                  Set to 1 or 0 if the 
currency_symbol                                  respectively precedes or succeeds the
                                  value for a negative formatted monetary
                                  quantity.       
char n_sep_by_space                                  Set to 0 if no space separates the                                  
currency_symbol or 
int_curr_symbol from
                                  the value for a negative formatted
                                  monetary quantity. Set to 1 if a space
                                  separates the symbol from the value; and
                                  set to 2 if a space separates the symbol
                                  and the sign string, if adjacent.       
char p_sign_posn                                  Set to a value indicating the positioning
                                  of the 
positive_sign for a non-negative
                                  formatted monetary quantity.       
char n_sign_posn                                  Set to a value indicating the positioning
                                  of the 
negative_sign for a negative
                                  formatted monetary quantity.       
char int_p_cs_precedes                                  Set to 1 or 0 if the 
int_curr_symbol                                  respectively precedes or succeeds the
                                  value for a non-negative internationally
                                  formatted monetary quantity.       
char int_n_cs_precedes                                  Set to 1 or 0 if the 
int_curr_symbol                                  respectively precedes or succeeds the
                                  value for a negative internationally
                                  formatted monetary quantity.       
char int_p_sep_by_space                                  Set to a value indicating the separation
                                  of the 
int_curr_symbol, the sign string,
                                  and the value for a non-negative
                                  internationally formatted monetary
                                  quantity.       
char int_n_sep_by_space                                  Set to a value indicating the separation
                                  of the 
int_curr_symbol, the sign string,
                                  and the value for a negative
                                  internationally formatted monetary
                                  quantity.       
char int_p_sign_posn                                  Set to a value indicating the positioning
                                  of the 
positive_sign for a non-negative
                                  internationally formatted monetary
                                  quantity.       
char int_n_sign_posn                                  Set to a value indicating the positioning
                                  of the 
negative_sign for a negative
                                  internationally formatted monetary
                                  quantity.
       The elements of 
grouping and 
mon_grouping are interpreted according
       to the following:       
{CHAR_MAX}
                     No further grouping is to be performed.       
0                     The previous element is to be repeatedly used for the
                     remainder of the digits.       
other                     The integer value is the number of digits that comprise
                     the current group. The next element is examined to
                     determine the size of the next group of digits before
                     the current group.
       The values of 
p_sep_by_space, 
n_sep_by_space, 
int_p_sep_by_space, and       
int_n_sep_by_space are interpreted according to the following:       
0            No space separates the currency symbol and value.       
1            If the currency symbol and sign string are adjacent, a space
            separates them from the value; otherwise, a space separates the
            currency symbol from the value.       
2            If the currency symbol and sign string are adjacent, a space
            separates them; otherwise, a space separates the sign string
            from the value.
       In an SUSv3-conforming application, for 
int_p_sep_by_space and       
int_n_sep_by_space, the fourth character of 
int_curr_symbol is used
       instead of a space.
       The values of 
p_sign_posn, 
n_sign_posn, 
int_p_sign_posn, and       
int_n_sign_posn are interpreted according to the following:       
0            Parentheses surround the quantity and 
currency_symbol or            
int_curr_symbol.       
1            The sign string precedes the quantity and 
currency_symbol or            
int_curr_symbol.       
2            The sign string succeeds the quantity and 
currency_symbol or            
int_curr_symbol.       
3            The sign string immediately precedes the 
currency_symbol or            
int_curr_symbol.       
4            The sign string immediately succeeds the 
currency_symbol or            
int_curr_symbol.
RETURN VALUES
       The 
localeconv() and 
localeconv_l() functions each return a pointer
       to a filled-in 
struct lconv.  While it is not declared 
const, the
       structure should not be modified by the application.  The structure
       returned by 
localeconv() may, however, be overwritten by a subsequent
       call to 
localeconv() or 
setlocale(3C).  The structure returned by       
localeconv_l() may be overwritten, freed, or otherwise invalidated if
       the 
locale_t argument 
loc is freed.
EXAMPLES
       Example 1: Rules used by four countries to format monetary quantities.
       The following table illustrates the rules used by four countries to
       format monetary quantities.       
Country          | 
Positive      | 
Negative       | 
International       -----------------+---------------+----------------+---------------
       Italy (IT)       | L.1.234       | -L.1.234       | ITL.1.234
       -----------------+---------------+----------------+---------------
       Netherlands (NE) | F 1.234,56    | F -1.234,56    | NLG 1.234,56
       -----------------+---------------+----------------+---------------
       Norway (NO)      | kr1.234,56    | kr1.234,56-    | NOK 1.234,56
       -----------------+---------------+----------------+---------------
       Switzerland (SW) | SFrs.1,234.56 | SFrs.1,234.56C | CHF 1,234.56
       For these four countries, the respective values for the monetary
       members of the structure returned by 
localeconv() are as follows:                            
IT       NE       NO       SW       int_curr_symbol      "ITL."   "NLG "   "NOK "   "CHF "       
currency_symbol      "L."     "F"      "kr"     "SFrs."       
mon_decimal_point    ""       ","      ","      "."       
mon_thousands_sep    "."      "."      "."      ","       
mon_grouping         "\3"     "\3"     "\3"     "\3"       
positive_sign        ""       ""       ""       ""       
negative_sign        "-"      "-"      "-"      "C"       
int_frac_digits      0        2        2        2       
frac_digits          0        2        2        2       
p_cs_precedes        1        1        1        1       
p_sep_by_space       0        1        0        0       
n_cs_precedes        1        1        1        1       
n_sep_by_space       0        1        0        0       
p_sign_posn          1        1        1        1       
n_sign_posn          1        4        2        2       
int_p_cs_precedes    1        1        1        1       
int_n_cs_precedes    1        1        1        1       
int_p_sep_by_space   0        0        0        0       
int_n_sep_by_space   0        0        0        0       
int_p_sign_posn      1        1        1        1       
int_n_sign_posn      1        4        4        2
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------------+
       |  ATTRIBUTE TYPE    |     ATTRIBUTE VALUE     |
       +--------------------+-------------------------+
       |CSI                 | Enabled                 |
       +--------------------+-------------------------+
       |Interface Stability | Standard                |
       +--------------------+-------------------------+
       |MT-Level            | MT-Safe with exceptions |
       +--------------------+-------------------------+
       The 
localeconv() function can be used safely in multithreaded
       applications, as long as 
setlocale(3C) is not being called to change
       the locale.  The 
localeconv_l() function and the object it returns
       can be used safely in multithreaded applications as long as the 
loc       argument is not freed, such as by another thread calling       
freelocale(3C) or 
newlocale(3C).
SEE ALSO
       setlocale(3C), 
newlocale(3C), 
freelocale(3C), 
attributes(7),       
environ(7), 
locale(7), 
standards(7)                                May 10, 2025                  LOCALECONV(3C)