K&Rを読もう(24) strlenの写経。

K&Rを写経しよう。

サンプルは配列だったので、ポインタ演算でstrlenしてみた。

#include <stdio.h>
#include <stdlib.h>

int strlen_copy(char *s)
{
   int i = 0;
    while (*(s + i) != '\0')
        i++;
    return i;
}

int main(void)
{
    printf("%d\n", strlen_copy("test strings.")); /* 13 */
    printf("%d\n", strlen_copy("日本語のテスト。(UTF-8)")); /* 31 */
    exit(EXIT_SUCCESS);
}
  • tanakaは変態なのでポインタ演算ラブです。
  • *(s + i++)とすると1文字多くカウントしてしまうので注意。
  • 日本語も使えたが、UTF-16にしたらコンパイルすら通らなかった・・・。
  • gccが親切にも本物のstrlenにリンクしてくれるので、strlenという名前は使えなかった。残念。

todo

  • UTF-8に'\0'が含まれるのか調べる必要アリ。