3
// code
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

#define SIZE 32
const char name[][SIZE] = {"en_US.utf8", "zh_CN.utf8", "zh_HK.utf8", "zh_TW.big5", "fr_BE.iso88591"};

int main(void)
{
    int count = sizeof(name) / SIZE;
    for (int i = 0; i < count; i++)
    {
        setlocale(LC_ALL, name[i]);
        const struct lconv *p = localeconv();
        printf("locale:[%s], currency symbol: [%s]\n", name[i], p->currency_symbol);
        printf("locale:[%s], international currency symbol: [%s]\n", name[i], p->int_curr_symbol); // why a tail space
    }

    return 0;
}

// output
locale:[en_US.utf8], currency symbol: [$]
locale:[en_US.utf8], international currency symbol: [USD ]
locale:[zh_CN.utf8], currency symbol: [?]
locale:[zh_CN.utf8], international currency symbol: [CNY ]
locale:[zh_HK.utf8], currency symbol: [HK$]
locale:[zh_HK.utf8], international currency symbol: [HKD ]
locale:[zh_TW.big5], currency symbol: [NT$]
locale:[zh_TW.big5], international currency symbol: [TWD ]
locale:[fr_BE.iso88591], currency symbol: [EUR]
locale:[fr_BE.iso88591], international currency symbol: [EUR ]

各「国際通貨記号」がスペース文字で終わるのはなぜですか? 私は結果に非常に混乱しています。誰が助けてくれますか?

4

1 に答える 1

2

セパレータとしてのみ使用されます。2 つの単語の間の最も一般的な区切り文字はスペースです。

int_curr_symbol の後に国際通貨記号が続きます。これは、ISO 4217 標準で定義されている国際通貨記号 (3 文字) とそれに続く区切り文字を含む 4 文字の文字列である必要があります。ソース: http://www.tin.org/bin/man.cgi?section=5&topic=LOCALE

読む: http://ftp.gnu.org/old-gnu/Manuals/glibc-2.2.3/html_node/libc_111.html

于 2012-09-25T09:29:14.583 に答える