*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> setlocale (3)              



NAME    [Toc]    [Back]

     setlocale, localeconv - natural language formatting for C

SYNOPSIS    [Toc]    [Back]

     #include <locale.h>

     char *
     setlocale(int category, const char *locale);

     struct lconv *

DESCRIPTION    [Toc]    [Back]

     The setlocale() function sets the C library's notion of natural language
     formatting style for particular sets of routines.  Each such
style is
     called a ``locale'' and is invoked using an appropriate name
passed as a
     C  string.  The localeconv() routine returns the current locale's parameters
 for formatting numbers.

     The setlocale() function recognizes  several  categories  of
     These  are  the categories and the sets of routines they select:

     LC_ALL       Set the entire locale generically.

     LC_COLLATE   Set a locale  for  string  collation  routines.
This controls
                  alphabetic ordering in strcoll() and strxfrm().

     LC_CTYPE     Set a locale for the ctype(3) functions.   This
                  recognition of upper and lower case, alphabetic
or non-alphabetic
 characters, and so on.  The real  work
is done by
                  the setrunelocale() function.

     LC_MONETARY   Set  a  locale for formatting monetary values;
this affects
                  the localeconv() function.

     LC_NUMERIC   Set a locale for formatting numbers.  This controls the formatting
  of  decimal points in input and output
of floating
                  point numbers in functions such as printf() and
scanf(), as
                  well as values returned by localeconv().

     LC_TIME      Set a locale for formatting dates and times using the
                  strftime() function.

     Only three locales are defined by default, the empty  string
"" which denotes
  the  native  environment, and the "C" and "POSIX" locales, which denote
 the C language environment.  A locale argument of  NULL
     setlocale()  to  return  the  current locale.  By default, C
programs start
     in the "C" locale.  The only function in  the  library  that
sets the locale
     is setlocale(); the locale is never changed as a side effect
of some other

     The localeconv() function returns a pointer to  a  structure
which provides
     parameters  for formatting numbers, especially currency values:

           struct lconv {
                   char    *decimal_point;
                   char    *thousands_sep;
                   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    frac_digits;
                   char    p_cs_precedes;
                   char    p_sep_by_space;
                   char    n_cs_precedes;
                   char    n_sep_by_space;
                   char    p_sign_posn;
                   char    n_sign_posn;

     The individual fields have the following meanings:

     decimal_point      The decimal point character,  except  for
currency values.

     thousands_sep       The  separator  between groups of digits
before the decimal
 point, except for currency values.

     grouping           The sizes of the groups of digits, except
for currency
                        values.  This is a pointer to a vector of
                        each of  size  char,  representing  group
size from low
                        order  digit  groups to high order (right
to left).  The
                        list  may  be  terminated   with   0   or
CHAR_MAX.  If the
                        list is terminated with 0, the last group
size before
                        the 0 is repeated to account for all  the
digits.  If
                        the  list is terminated with CHAR_MAX, no
more grouping
                        is performed.

     int_curr_symbol    The standardized  international  currency

     currency_symbol    The local currency symbol.

     mon_decimal_point   The decimal point character for currency

     mon_thousands_sep  The separator for digit groups in currency values.

     mon_grouping       Like grouping but for currency values.

     positive_sign      The character used to denote non-negative
                        values, usually the empty string.

     negative_sign      The character  used  to  denote  negative
currency values,
                        usually a minus sign.

     int_frac_digits     The  number  of digits after the decimal
point in an international-style
 currency value.

     frac_digits        The number of digits  after  the  decimal
point in the
                        local style for currency values.

     p_cs_precedes       1  if  the  currency symbol precedes the
currency value
                        for non-negative values, 0 if it follows.

     p_sep_by_space     1 if a space is inserted between the currency symbol
                        and the currency value  for  non-negative
values, 0 otherwise.

     n_cs_precedes       Like p_cs_precedes but for negative values.

     n_sep_by_space     Like p_sep_by_space but for negative values.

     p_sign_posn         The  location  of the positive_sign with
respect to a
                        non-negative     quantity     and     the
currency_symbol, coded
                        as follows:

                        0      Parentheses   around   the  entire
                        1    Before the string.
                        2    After the string.
                        3    Just before currency_symbol.
                        4    Just after currency_symbol.

     n_sign_posn        Like p_sign_posn but for negative currency values.

     Unless  mentioned  above,  an  empty string as a value for a
field indicates
     a zero length result or a value that is not in  the  current
locale.  A
     CHAR_MAX result similarly denotes an unavailable value.

RETURN VALUES    [Toc]    [Back]

     The  setlocale()  function  returns NULL and fails to change
the locale if
     the given combination of category and locale makes no sense.
     localeconv()  function  returns a pointer to a static object
which may be
     altered by later calls to setlocale() or localeconv().

STANDARDS    [Toc]    [Back]

     The setlocale() and localeconv() functions conform  to  ANSI
     (``ANSI C'').

HISTORY    [Toc]    [Back]

     The setlocale() and localeconv() functions first appeared in

BUGS    [Toc]    [Back]

     The current implementation supports only the "C" and "POSIX"
locales for
     all but the LC_CTYPE locale.

     In spite of the gnarly currency support in localeconv(), the
     don't include any functions for generalized currency formatting.

     LC_COLLATE  does  not make sense for many languages.  Use of
     could lead to misleading results until we have a  real  time
currency conversion
  function.   LC_NUMERIC  and  LC_TIME  are  personal
choices and should
     not be wrapped up with the other categories.

OpenBSD      3.6                           June      9,      1993
[ Back ]
 Similar pages
Name OS Title
alog IRIX FORTRAN natural logarithm intrinsic function
geocustoms HP-UX configure system language on multi-language systems
sbuf FreeBSD safe string formatting
sbuf_cat FreeBSD safe string formatting
sbuf_data FreeBSD safe string formatting
sbuf_setpos FreeBSD safe string formatting
sbuf_clear FreeBSD safe string formatting
sbuf_finish FreeBSD safe string formatting
sbuf_overflowed FreeBSD safe string formatting
sbuf_trim FreeBSD safe string formatting
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service