locale.h
2.6 locale.h
The locale header is useful for setting location specific information.
Variables:
struct lconv
Macros:
NULL
LC_ALL
LC_COLLATE
LC_CTYPE
LC_MONETARY
LC_NUMERIC
LC_TIME
Functions:
localeconv();
setlocale();
2.6.1 Variables and Definitions
The lconv structure contains the following variables in any order. The use of this structure is described in 2.6.3 localeconv.
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 LC_ macros are described in 2.6.2 setlocale. NULL is the value of a null pointer constant.
Declaration:
char *setlocale(int category, const char *locale);
Sets or reads location dependent information.
category can be one of the following:
LC_ALL | Set everything. |
LC_COLLATE | Affects strcoll and strxfrm functions. |
LC_CTYPE | Affects all character functions. |
LC_MONETARY | Affects the monetary information provided by localeconv function. |
LC_NUMERIC | Affects decimal-point formatting and the information provided by localeconv function. |
LC_TIME | Affects the strftime function. |
A value of "C" for locale sets the locale to the normal C translation environment settings (default). A null value ("") sets the native environment settings. A null pointer (NULL) causes setlocale to return a pointer to the string associated with this category for the current settings (no changes occur). All other values are implementation-specific.
After a successful set, setlocale returns a pointer to a string which represents the previous location setting. On failure it returns NULL.
Example:
#include<locale.h>
#include<stdio.h>
int main(void)
{
char *old_locale;
old_locale=setlocale(LC_ALL,"C");
printf("The preivous setting was %s.\n",old_locale);
return 0;
}
Declaration:
struct lconv *localeconv(void);
Sets the structure lconv to represent the current location settings.
The string pointers in the structure may point to a null string ("") which indicates that the value is not available. The char types are nonnegative numbers. If the value is CHAR_MAX, then the value is not available.
lconv variables:
char *decimal_point | Decimal point character used for non-monetary values. |
char *thousands_sep | Thousands place separator character used for non-monetary values. |
char *grouping | A string that indicates the size of each group of digits in non-monetary quantities. Each character represents an integer value which designates the number of digits in the current group. A value of 0 means that the previous value is to be used for the rest of the groups. |
char *int_curr_symbol | A string of the international currency symbols used. The first three characters are those specified by ISO 4217:1987 and the fourth is the character which separates the currency symbol from the monetary quantity. |
char *currency_symbol | The local symbol used for currency. |
char *mon_decimal_point | The decimal point character used for monetary values. |
char *mon_thousands_sep | The thousands place grouping character used for monetary values. |
char *mon_grouping | A string whose elements define the size of the grouping of digits in monetary values. Each character represents an integer value which designates the number of digits in the current group. A value of 0 means that the previous value is to be used for the rest of the groups. |
char *positive_sign | The character used for positive monetary values. |
char *negative_sign | The character used for negative monetary values. |
char int_frac_digits | Number of digits to show after the decimal point in international monetary values. |
char frac_digits | Number of digits to show after the decimal point in monetary values. |
char p_cs_precedes | If equal to 1, then the currency_symbol appears before a positive monetary value. If equal to 0, then the currency_symbol appears after a positive monetary value. |
char p_sep_by_space | If equal to 1, then the currency_symbol is separated by a space from a positive monetary value. If equal to 0, then there is no space between the currency_symbol and a positive monetary value. |
char n_cs_precedes | If equal to 1, then the currency_symbol precedes a negative monetary value. If equal to 0, then the currency_symbol succeeds a negative monetary value. |
char n_sep_by_space | If equal to 1, then the currency_symbol is separated by a space from a negative monetary value. If equal to 0, then there is no space between the currency_symbol and a negative monetary value. |
char p_sign_posn | Represents the position of the positive_sign in a positive monetary value. |
char n_sign_posn | Represents the position of the negative_sign in a negative monetary value. |
The following values are used for p_sign_posn and n_sign_posn:
0 | Parentheses encapsulate the value and the currency_symbol. |
1 | The sign precedes the value and currency_symbol. |
2 | The sign succeeds the value and currency_symbol. |
3 | The sign immediately precedes the value and currency_symbol. |
4 | The sign immediately succeeds the value and currency_symbol. |
Example:
#include<locale.h>
#include<stdio.h>
int main(void)
{
struct lconv locale_structure;
struct lconv *locale_ptr=&locale_structure;
locale_ptr=lcoaleconv();
printf("Decimal point: %s",locale_ptr->decimal_point);
printf("Thousands Separator: %s",locale_ptr->thousands_sep);
printf("Grouping: %s",locale_ptr->grouping);
printf("International Currency Symbol: %s",locale_ptr->int_curr_symbol);
printf("Currency Symbol: %s",locale_ptr->currency_symbol);
printf("Monetary Decimal Point: %s",locale_ptr->mon_decimal_point);
printf("Monetary Thousands Separator: %s",locale_ptr->mon_thousands_sep);
printf("Monetary Grouping: %s",locale_ptr->mon_grouping);
printf("Monetary Positive Sign: %s",locale_ptr->positive_sign);
printf("Monetary Negative Sign: %s",locale_ptr->negative_sign);
printf("Monetary Intl Decimal Digits: %c",locale_ptr->int_frac_digits);
printf("Monetary Decimal Digits: %c",locale_ptr->frac_digits);
printf("Monetary + Precedes: %c",locale_ptr->p_cs_precedes);
printf("Monetary + Space: %c",locale_ptr->p_sep_by_space);
printf("Monetary - Precedes: %c",locale_ptr->n_cs_precedes);
printf("Monetary - Space: %c",locale_ptr->n_sep_by_space);
printf("Monetary + Sign Posn: %c",locale_ptr->p_sign_posn);
printf("Monetary - Sign Posn: %c",locale_ptr->n_sign_posn);
With Thanks & Regards,
Rajesh S
Comments
Post a Comment