タグ

2013年3月1日のブックマーク (1件)

  • 標準Cライブラリの実装 strlen関数

    今回は文字列の長さを調べるstrlen関数です。こういう単純な関数は、アセンブリ言語で記述すれば、より高速化できる場合もあるのですが、とりあえずはC言語で実装することにします。アセンブリ言語を使って、高速化の余地があるものについては、後ほど機会があれば扱いたいと思います。 それでは早速strlenの実装を行います。まずは、最も素直な実装からはじめてみましょう。 #include <stddef.h> size_t strlen(const char *s) { size_t n; for (n = 0; *s != '\0'; s++, n++) ; return n; } ご覧の通り、文字列sを最初から順番に調べ、ナル文字が見つかるまでnをインクリメントしています。この実装でも動作はしますが、あまり効率はよくありません。なぜなら、1回ループするごとに、2回もインクリメントを行っているから