Keresés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz #68216320 #4894 üzenetére

    A forrásfájl kódolása tetszőleges lehet és független a futásidejű kódolástól. Az aktuális locale beállításból jön, alapértelmezése pedig utf8. Persze meg is lehet adni a fordítónak, gcc esetén a -finput-charset kapcsolóval.

    #include <stdio.h>
    #include <wchar.h>
    #include <locale.h>

    int main()
    {
    const wchar_t* text = L"árvíztűrő tükörfúrógép";
    wchar_t buf[40];
    setlocale(LC_ALL, "");
    wprintf(L"Írd be, hogy %ls: ", text);
    fgetws(buf, 40, stdin);
    buf[wcslen(buf) - 1] = 0;
    wprintf(L"Ezt írtad be: \"%ls\", %ls\n", buf,
    wcscmp(text, buf) ? L"nem egyezik" : L"egyezik");
    return 0;
    }

    $ file test-utf8.c
    test-utf8.c: C source, UTF-8 Unicode text
    $ gcc -finput-charset=utf8 test-utf8.c
    $ ./a.out
    Írd be, hogy árvíztűrő tükörfúrógép: árvíztűrő tükörfúrógép
    Ezt írtad be: "árvíztűrő tükörfúrógép", egyezik
    $ iconv -f utf8 -t iso8859-2 < test-utf8.c > test-latin2.c
    $ gcc -finput-charset=iso8859-2 test-latin2.c
    $ ./a.out
    Írd be, hogy árvíztűrő tükörfúrógép: árvíztűrő tükörfúrógép
    Ezt írtad be: "árvíztűrő tükörfúrógép", egyezik

    Mégegyszer, röviden: a forrás tetszőleges kódlappal lehet, ha azt megmondod a fordítónak. Futásidőben pedig a setlocale megfelelő használata szükséges. Ennyi.

Új hozzászólás Aktív témák