[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. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (30 PV)
  2. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (3 PV)
  3. MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (3 PV)
  4. C# (2 PV)
  5. 動画共有サイト - ニコニコ動画 (2 PV)
  6. シストレ(システムトレード) - コンピューターシステムで株や通貨を自動売買 (2 PV)
  7. アボガドのオリーブオイル漬け (2 PV)
  8. Windows Vista Capable PC (2 PV)
  9. ハッピーハッキングキーボード(HHKB、Happy Hacking Keyboard) (2 PV)
  10. ブログを利用したECサイト向け口コミ広告サービス (2 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (164 PV)
  2. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (155 PV)
  3. 2NN 2ちゃんねるニュース速報+ナビ (79 PV)
  4. FC2まとめ (38 PV)
  5. 仲値トレードが簡単にできる無料EA「NAKANE3」 #MT4 (35 PV)
  6. MT4向け1ポジブレイクアウトEA「HEADLINE」オープンソースライセンス(GPL3)で公開 #USDJPY (32 PV)
  7. 2ちゃんねる(2ch) (30 PV)
  8. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (29 PV)
  9. 爆益を狙うハイリスクハイリターンのナンピンマーチンEA「Hyper Dollar MT5」 (27 PV)
  10. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (24 PV)

アクセス統計

ディレクトリ

関連サイト