UTF-8をコードポイントに分解する まずはじめに、コマンドライン引数で入力された文字列を、コードポイントごとに表示するプログラムを作成します。 UTF-8からコードポイントを求める方法は、Wikipedia で説明されているとおりです。 注意: 以下の説明は、Windowsでは動作しません。Linux, FreeBSD, MacOSX (またはCygwin)で試してください。 #include <stdio.h> /** * next_codepoint(&ptr); * ptrを、次のコードポイントの位置に動かす */ static int next_codepoint(const char **pp) { const char *p = *pp; int c = -1; if (*p == 0) { } else if ((*p & 0x80) == 0) { c = *p++ &
![UTF-8の文字列の文字数を数える - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/516902e27b6069b6d4e9918e0a021d86d820d98e/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9VVRGLTglRTMlODElQUUlRTYlOTYlODclRTUlQUQlOTclRTUlODglOTclRTMlODElQUUlRTYlOTYlODclRTUlQUQlOTclRTYlOTUlQjAlRTMlODIlOTIlRTYlOTUlQjAlRTMlODElODglRTMlODIlOEImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWY1NTFhMTIxZTkxODMwYTMzODIwNDIxODk5NDdiMWNk%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQweDc2OCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YWI5YzFiZjc5MTUwMWZlYTc4OGUyNzdhNmUyODI0YjQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Ddfaa3f2728d84b406ac78bf218368362)