Should we not be using wchar_t strings in modern C?<p><pre><code>    int main(int argc, char *argv[]) {
        wchar_t buf[100];
        wprintf(L&quot;Hello, world!\ntype something&gt;&quot;);
        if (fgetws(buf, 100, stdin))
            wprintf(L&quot;You typed &#x27;%ls&#x27;\n&quot;, buf);
        if (argv[1]) {
            char *s = argv[1];
            &#x2F;* Convert char string to wchar_t string *&#x2F;
            size_t len = mbsrtowcs(buf, &amp;s, 99, NULL);
            if (len != (size_t)-1) {
                buf[len] = 0;
                wprintf(L&quot;argv[1] is &#x27;%ls&#x27;\n&quot;, buf);
            }
        return 0;
    }
</code></pre>
It&#x27;s a pain, but the advantage is access to iswalpha() and friends.