Set numeric formatting according to the current locale
#include <locale.h>
struct lconv * localeconv( void );
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The localeconv() function gets the values appropriate for
formatting numeric quantities using the current locale.
It returns a pointer to a struct lconv
with the following members:
- char * decimal_point
    
- The decimal-point character used for nonmonetary quantities.
    
    
- char * thousands_sep
    
- The character used to separate groups of digits on the left of the
        decimal-point character formatted nonmonetary quantities.
    
- char * int_curr_symbol
    
- The international currency symbol for the current locale.
        The first three characters contain the alphabetic international 
        currency symbol in accordance with those specified in
        ISO 4217: Codes for the Representation of Currency and 
        Funds.  The fourth character (immediately preceding the 
        NUL character) 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 character used to format monetary quantities.
    
    
- char * mon_thousands_sep
    
- The character used to separate groups of digits on the left of the
        decimal-point character in formatted monetary quantities.
    
- char * mon_grouping
    
- A string whose elements indicate the size of each group of digits
        in formatted monetary quantities.
      
    
- char * grouping
    
- A string whose elements indicate the size of each group of digits
        in formatted nonmonetary quantities.
    
- char * positive_sign
    
- The string used to indicate a nonnegative monetary quantity.
    
    
- char * negative_sign
    
- The string used to indicate a negative monetary quantity.
    
    
- char int_frac_digits
    
- The number of fractional digits (to the right of the decimal
        point) to display in an internationally formatted monetary
        quantity.
        
    
- char frac_digits
    
- The number of fractional digits (to the right of the decimal
        point) to display in a formatted monetary quantity.
        
    
- char p_cs_precedes
    
- Set to 1 or 0 if the 
        currency_symbol precedes or follows the value for a
        nonnegative monetary quantity.
        
    
- char p_sep_by_space
    
- Set to 1 or 0 if the currency_symbol 
        is or isn't separated by a space from the value for a nonnegative
        monetary quantity.
        
    
- char n_cs_precedes
    
- Set to 1 or 0 if the 
        currency_symbol precedes
        or follows the value for a negative monetary quantity.
    
- char n_sep_by_space
    
- Set to 1 or 0 if the currency_symbol
        is or isn't separated by a space from the value for a negative 
        monetary quantity.
    
- char p_sign_posn
    
- The position of the positive_sign for a nonnegative
        monetary quantity.
        
    
- char n_sign_posn
    
- The position of the positive_sign for a negative
        monetary quantity.
The grouping and mon_grouping members
have the following values:
- CHAR_MAX
    
- Perform no further grouping.
        
    
- 0
    
- Repeat the previous element used for the remainder of
        the digits.
    
- other
    
- The value is the number of digits that comprise the current group.
        Examine the next element to determine the size of the next group
        of digits (to the left of the current group).
The p_sign_posn and n_sign_posn members have the
following values:
- 0
    
- Parentheses surround the quantity and currency_symbol.
    
- 1
    
- The sign string precedes the quantity and currency_symbol.
    
- 2
    
- The sign string follows the quantity and currency_symbol.
    
- 3
    
- The sign string immediately precedes the quantity and
        currency_symbol.
    
- 4
    
- The sign string immediately follows the quantity and
        currency_symbol.
A pointer to the struct lconv.
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
int main( void ) 
{
    struct lconv *lc;
    lc = localeconv();
    printf( "decimal_point (%s)\n",
        lc->decimal_point );
    printf( "thousands_sep (%s)\n",
        lc->thousands_sep );
    printf( "int_curr_symbol (%s)\n",
        lc->int_curr_symbol );
    printf( "currency_symbol (%s)\n",
        lc->currency_symbol );
    printf( "mon_decimal_point (%s)\n",
        lc->mon_decimal_point );
    printf( "mon_thousands_sep (%s)\n",
        lc->mon_thousands_sep );
    printf( "mon_grouping (%s)\n",
        lc->mon_grouping );
    printf( "grouping (%s)\n",
        lc->grouping );
    printf( "positive_sign (%s)\n",
        lc->positive_sign );
    printf( "negative_sign (%s)\n",
        lc->negative_sign );
    printf( "int_frac_digits (%d)\n",
        lc->int_frac_digits );
    printf( "frac_digits (%d)\n",
        lc->frac_digits );
    printf( "p_cs_precedes (%d)\n",
        lc->p_cs_precedes );
    printf( "p_sep_by_space (%d)\n",
        lc->p_sep_by_space );
    printf( "n_cs_precedes (%d)\n",
        lc->n_cs_precedes );
      
    printf( "n_sep_by_space (%d)\n",
        lc->n_sep_by_space );
    printf( "p_sign_posn (%d)\n",
        lc->p_sign_posn );
    printf( "n_sign_posn (%d)\n",
        lc->n_sign_posn );
    return EXIT_SUCCESS;
}
ANSI,
POSIX 1003.1
| Safety: |  | 
|---|
| Cancellation point | No | 
| Interrupt handler | No | 
| Signal handler | No | 
| Thread | Yes | 
isalpha(),
isascii(),
printf(),
scanf(),
setlocale(),
strcat(),
strchr(),
strcmp(),
strcoll(),
strcpy(),
strftime(),
strlen(),
strpbrk(),
strspn(),
strtod(),
strtok(),
strxfrm()