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'が含まれるのか調べる必要アリ。