C言語-文字列の長さを返す自作関数my_strlen

ようは車輪の再発明です。

文字列をいれてその長さを出す関数をポインタで作ります。動的にメモリを割り当てるため、malloc関数を使っています。おそらくもっと効率のいい方法があるのでしょうが、いまはこれで済ませましょう。

コード

#include <stdio.h>
#include <stdlib.h>
int my_strlen(char *s);

int main(void) {
  char* str;
  str = (char *)malloc(sizeof(char)*100); //char *型でメモリを確保する

  printf("文字列を入力してください: ");scanf("%s",str);

  printf("この文字列の長さは%dです\n",my_strlen(str) );

  return 0;
}

int my_strlen(char *s) {
  int count=0;

  while( *s++ != '\0') 
    count++;

  return count;
}

ちょっと解説。

  while( *s++ != '\0') 
    count++;

ポインタでNULL判定したのちに後置インクリメントをして次のアドレスを指定しています。(表現これであっているかな

実行結果

./my_strlen
文字列を入力してください: odd-eyes-pendulum-dragon
この文字列の長さは24です