とある書籍を読み返していて、
strlen関数を、ループを使用しないで実現してください
という文章が目に留まってちょいと気になった(スイッチが入った)ので、実際に書いてみた。所要時間は10分らしい。
久しぶりのC言語で、以下、私なりの答え。
#include <stdio.h> #include <stdlib.h> size_t strlen(const char *s) { return (*s != '\0' ? 1 + strlen(++s) : 0); } int main(void) { char *s = "hello, world."; printf("strlen(%s): %d\n", s, strlen(s)); return EXIT_SUCCESS; }
……所要時間約8分。
‘\0’を検出するまで再帰的に調べる方法ぐらいしか思いつかなかった。