(original) (raw)

#include #include #include #include #include void dump(const char *name, const char *bstr) { #define WSTR_LEN 100 wchar_t wstr[WSTR_LEN]; unsigned char ch; wchar_t wch; size_t i, len; printf("%s byte string: \"", name); len = strlen(bstr); for (i=0; i<len; i++)="" {="" ch="bstr[i];" if="" (32="" <="ch" &&="" printf("%c",="" ch);="" else="" printf("\\x%02x",="" }="" printf("\"="" (%u="" bytes)\n",="" len);="" len="mbstowcs(wstr," bstr,="" wstr_len);="" (len="=" (size_t)-1)="" printf("mbstowcs="" failed\n!");="" return;="" printf("%s="" wide="" string:="" l\"",="" name);="" for="" (i="0;" i<len;="" wch="wstr[i];" printf("%lc",="" wch);="" (wch="" printf("\\u%04x",="" printf("\\u%08x",="" characters)\n",="" int="" main(int="" argc,="" char="" **argv)="" const="" *locale;="" struct="" lconv="" *conv;="" (argc="" !="2)" printf("usage:="" %s="" locale\n",="" argv[0]);="" exit(1);="" locale="argv[1];" printf("size="" of="" wchar_t:="" %u="" bits\n",="" sizeof(wchar_t)="" *="" 8);="" locale);="" (locale="=" null)="" perror("setlocale="" failed");="" conv="localeconv();" (conv="=" perror("localeconv="" dump("thousands_sep",="" conv-="">thousands_sep); dump("currency_symbol", conv->currency_symbol); return 0; } </len;>