TL; DR:
wchar_t wchar_t?
C , .
char .
, " char , , char unsigned char." (C2011, 6.2.5/15)
, signed char unsigned char.
", , , , , signed char unsigned char , , .
, , , char, unsigned char
, . , , char, , , . , - char .
getchar() . int, , , - . , : int unsigned char, char unsigned char.
int int getchar(), stdio . char - int, ( ) . , .
, ISO C90, wchar_t, wchar_t.
C90 , , , - C2011 (7.19/2), wchar_t
, , [...].
glibc , , , glibc. , , , . , , , . , , , , char, wchar_t char. , .
:
, >= 0 ( wchar_t). - , ?
, , , , , , , , , , , , C. , , , C.
, , wchar_t 16- (), 15 ?
C . wchar_t. , , , 32767, wchar_t.
, , wchar_t ?
C . , wchar_t ( , ). , , - , ( ) , set . 1 wchar_t.
, , , wchar_t wint_t. ?
, "". , wint_t
, , , , .
(C2011, 7.29.1/2)
wchar_t , , . wint_t . , wchar_t , . , . wint_t .
, , 32767, wchar_t 16- , wint_t 16- . , wchar_t, , wint_t ( wint_t , - ).
, . char , getchar() - -1, , , unsigned char. , wint_t, , .
,
iswlower((unsigned wchar_t)wc) , unsigned wchar_t.
, . wchar_t iswlower() , , , . , . unsigned wchar_t, C , , , .
, :
, , unsigned int int ? ( wint_t wchar_t glibc)
. , , , wchar_t int wint_t unsigned int.
, , getwchar() WEOF. WEOF wchar_t, , , . , putwchar() . , WEOF , UINT_MAX ( <<27 > ), int , , putwchar().
, , , , , , getwchar() , WEOF, , wchar_t. , , , int ( wchar_t) .
, , , . wchar_t wint_t, , . ( , .)
, , , :
#include <locale.h>
#include <wchar.h>
int main(void)
{
setlocale(LC_CTYPE, "en_US.UTF-8");
wint_t wc = getwchar();
if (wc != WEOF) {
putwchar(wc);
}
}
:
#include <locale.h>
#include <wchar.h>
#include <wctype.h>
int main(void)
{
setlocale(LC_CTYPE, "en_US.UTF-8");
wchar_t wc = L'ΓΏ';
if (iswlower(wc)) return 0;
return 1;
}