#include #include int main(int argc, char *argv[]) { wchar_t w[10]; char c[10]; int i; int lose = 0; i = mbstowcs(w, "bar", 4); if (!(i == 3 && w[1] == 'a')) { puts("mbstowcs FAILED!"); lose = 1; } mbstowcs(w, "blah", 5); i = wcstombs(c, w, 10); if (i != 4) { puts("wcstombs FAILED!"); lose = 1; } if (mblen("foobar", 7) != 1) { puts("mblen 1 FAILED!"); lose = 1; } if (mblen("", 1) != 0) { puts("mblen 2 FAILED!"); lose = 1; } { int r; char c = 'x'; wchar_t wc; char mbc[MB_CUR_MAX]; if ((r = mbtowc(&wc, &c, MB_CUR_MAX)) <= 0) { printf("conversion to wide failed, result: %d\n", r); lose = 1; } else { printf("wide value: 0x%04lx\n", (unsigned long) wc); mbc[0] = '\0'; if ((r = wctomb(mbc, wc)) <= 0) { printf("conversion to multibyte failed, result: %d\n", r); lose = 1; } } } puts(lose ? "Test FAILED!" : "Test succeeded."); return lose; }