[PC]の検索結果


C言語のstrlen関数では文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。

Webアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。

#include <stdio.h>
#include <string.h>

int strlen_utf8(char *cp);
int _bytesize(unsigned char code);

int main(void)
{
    char *testAscii = "ABCDEFG";
    char *testHira  = "あいうえお";
    char *testKata  = "アイウエ";
    char *testKanji = "愛々木";
    char *testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";

    printf("strlen(testAscii) = %d\n", strlen(testAscii));
    printf("strlen_utf8(testAscii) = %d\n", strlen_utf8(testAscii));

    printf("strlen(testHira) = %d\n", strlen(testHira));
    printf("strlen_utf8(testHira) = %d\n", strlen_utf8(testHira));

    printf("strlen(testKata) = %d\n", strlen(testKata));
    printf("strlen_utf8(testKata) = %d\n", strlen_utf8(testKata));

    printf("strlen(testKanji) = %d\n", strlen(testKanji));
    printf("strlen_utf8(testKanji) = %d\n", strlen_utf8(testKanji));

    printf("strlen(testAll) = %d\n", strlen(testAll));
    printf("strlen_utf8(testAll) = %d\n", strlen_utf8(testAll));

    return 0;
}

/* UTF-8でエンコードされた文字列の文字数を取得 */
int strlen_utf8(char *cp)
{
    int textlen = strlen(cp);
    int pos = 0;
    int count = 0;

    while (pos < textlen) {
        unsigned char code;
        code = *(cp + pos); /* ASCIIコード値を取得 */
        int bytelen = _bytesize(code);
        pos += bytelen;
        count++; /* 文字数をカウント */
    }

    return count;
}

/* 文字のバイト長を求める */
int _bytesize(unsigned char code)
{
    int size = 1;
    int i;

    if (0x80 & code) { /* 1バイト文字以外 */
        for (i = 2; i <= 8; i++) {
            code <<= 1;
            if (!(0x80 & code)) {
                break;
            }
            size++;
        }
    }
    return size;
}

strlen_utf8関数では、1バイト目のASCIIコード値をパラメータとして_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。

また、_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定して戻り値として返しています。

プロクラムの実行結果は以下のようになります。

kagahiro@kagahiro-PC ~/sample/c
$ ./strlen_utf8
strlen(testAscii) = 7
strlen_utf8(testAscii) = 7
strlen(testHira) = 15
strlen_utf8(testHira) = 5
strlen(testKata) = 12
strlen_utf8(testKata) = 4
strlen(testKanji) = 9
strlen_utf8(testKanji) = 3
strlen(testAll) = 52
strlen_utf8(testAll) = 22

[2323] Posted by kagahiro at 2013/07/01 20:46:54
1 point | Link (3) | Trackback (0) | Comment (1)

CustomFormは、WEB上で自由にアンケートフォームを作成することが出来る無料サービス。アンケートフォームの作成にHTMLやCGIの知識は要らない。作成したアンケートは自分のブログにリンクを張ったり、メールで友達に送ったりすることができる。PC・モバイル(スマートフォン)対応。

アンケートフォーム作成サイト CustomForm

[2297] Posted by kagahiro at 2013/05/20 17:06:33
0 point | Link (2) | Trackback (0) | Comment (0)

DECOLOG(デコログ)は、デコメで簡単にブログや日記やプロフを書けるケータイ向けのサービス。利用するには携帯電話から会員登録する必要がある(PCからの登録はできない)。

DECOLOG(デコログ)
デコログ検索ファンサイト DECOFUN.JP デコログ検索で友達を探そう
月間65億PV! 巨大サイト「DECOLOG(デコログ)」の正体 (前編)
月間65億PV! 巨大サイト「DECOLOG(デコログ)」の正体 (後編)

[2274] Posted by kagahiro at 2013/02/18 09:00:12
0 point | Link (2) | Trackback (0) | Comment (0)

株式会社はてなが、音楽やアニメ、スポーツなど、同じ興味・関心を持った人同士でコミュニケーションできる新しいコミュニティサービス「はてなスペース」をリリースした。スマートフォンおよびパソコンで利用できる...
[2259] Posted by kagahiro at 2013/01/16 22:39:00
0 point | Link (1) | Trackback (0) | Comment (0)

Nexus(ネクサス)は、グーグルが販売しているタブレット端末で、持ち運びに便利な7インチの「Nexus7(ネクサスセブン)」と10インチ高解像度ディスプレイ(2560x1600)とパワフルなグラフィックプロセッサが搭載され...
[2258] Posted by kagahiro at 2013/01/10 11:30:04
0 point | Link (5) | Trackback (0) | Comment (0)

textream(テキストリーム)は、Yahoo! JAPANを運営するヤフー株式会社が「Yahoo!掲示板」に変わるコミュニケーションサービスとして提供を開始したサービス。当面の併存期間を経た上で、2013年初旬にスマートフォン...
[2254] Posted by kagahiro at 2012/12/21 20:11:10
2 point | Link (2) | Trackback (0) | Comment (2)

NHN Japan株式会社が、同社が運営する無料通話・メールアプリ「LINE」のWindows 8対応アプリの提供を開始した。Windows 8のユーザーインターフェイスである「Modern UI」に最適化されており、タッチパネル搭載のPC端...
[2251] Posted by kagahiro at 2012/12/21 12:39:20
0 point | Link (2) | Trackback (0) | Comment (0)

PC向けのOS(オペレーティングシステム)としては圧倒的なシェアを持つマイクロソフトのOS「Windows」の最新版「Windows 8(ウィンドウズ エイト)」の日本語版の販売が開始された。Windows 8(ウィンドウズ エイト)は...
[2233] Posted by kagahiro at 2012/10/26 12:17:19
1 point | Link (3) | Trackback (1) | Comment (0)

レスポンシブウェブデザイン(Responsive Web Design)は、PC、タブレット、スマートフォンなど、様々なデバイスに最適化したWebサイトを、単一のHTMLで構築するデザイン手法で、ブラウザのスクリーンサイズを基準に...
[2231] Posted by kagahiro at 2012/10/19 17:35:45
1 point | Link (4) | Trackback (0) | Comment (1)

Google検索アプライアンス(Google Search Appliance)は、検索エンジン世界最大手のGoogleが企業向けに販売しているドキュメント検索に特化したハードウェアと検索システムが一体となった製品で、ユーザーはインター...
[2229] Posted by kagahiro at 2012/10/18 11:39:32
0 point | Link (1) | Trackback (0) | Comment (0)

|< 先頭へ  < 前へ  1 2 3 4 5  次へ >


アクセスランキング

今日のアクセスランキング TOP 10

  1. FC2まとめ (4 PV)
  2. Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
  3. 2ちゃんねる(2ch) (3 PV)
  4. 大人気のブランド品即時買取サービス「CASH」がDMM.comにたったの70億円で買い叩かれる (2 PV)
  5. 無料ダイヤルアッププロバイダ「Soloot(ソルート)」 (2 PV)
  6. ほしい物リスト (2 PV)
  7. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2 PV)
  8. 掲示板CGI ThreadPlus 1.2 のリリース (2 PV)
  9. RDB(リレーショナルデータベース) (2 PV)
  10. 入金0円ですぐにFXが始められる初心者におすすめの海外FXブローカー「XM」 #MT4 #MT5 #口座開設 (2 PV)

今月のアクセスランキング TOP 10

  1. FC2まとめ (12 PV)
  2. 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
  3. 掲示板CGI ThreadPlus 1.2 のリリース (5 PV)
  4. 「Kindle for the Web」 (5 PV)
  5. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (5 PV)
  6. Jipanguの配布は終了しました (4 PV)
  7. [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (4 PV)
  8. Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
  9. 「さくらのクラウド」のオプションサービスで「専有ホスト」の提供を開始 (3 PV)
  10. ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (3 PV)

アクセス統計

ディレクトリ

関連サイト