#include #include #include #include #include struct lconv *lconvert; int main(int argc, char **argv) { int fpoint; char dsymbol, ssymbol, psymbol, nsymbol, csymbol; if (argc > 1) printf( "locale set to %s\n", setlocale(LC_MONETARY, getenv(argv[1]))); #if FALSE printf( "locale set to %s\n", setlocale(LC_MONETARY, "C")); #endif lconvert = localeconv(); /* frac_digits in the C locale seems to return CHAR_MAX */ /* best guess is 2 in this case I think */ #if FALSE fpoint = ((lconvert->frac_digits != CHAR_MAX) ? lconvert->frac_digits : 2); /* int_frac_digits? */ #endif fpoint = lconvert->frac_digits; /* int_frac_digits? */ dsymbol = *lconvert->mon_decimal_point; ssymbol = *lconvert->mon_thousands_sep; csymbol = *lconvert->currency_symbol; psymbol = *lconvert->positive_sign; nsymbol = *lconvert->negative_sign; printf( "numeric decimal point '%c'\n", *lconvert->decimal_point); printf( "cashin- frac digits '%d'; mon decimal '%c'; mon thousands '%c'; currency '%c'; positive '%c'; negative '%c'\n", fpoint, dsymbol, ssymbol, csymbol, psymbol, nsymbol); exit(0); }