とある書籍を読み返していて、
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’を検出するまで再帰的に調べる方法ぐらいしか思いつかなかった。