FC2ブログ

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

strchr関数の実装 

今回は、strchr関数の実装をしたいと思います。

char *strchr(const char *str, int c)
{
   // NULLかチェック
   if(!str)return NULL;

   // char型にキャスト
   c = (char)c;

   // 文字列の最後まで探索
   do {
       if(*str == c)
          return ((char *)str);

   } while(*str++ != '\0');

   return NULL;
}

strchr関数って'\0'も探索できるんですねえ。
初めて知りましたw

※間違いなどがありましたら報告してくれるとうれしいです。
スポンサーサイト

atoi関数の実装 

今回は、文字列を整数に変換する関数「atoi関数」を実装してみたいと思います。

int atoi ( const char *str )
{
   // NULLかチェック
   if(!str)return 0;

   int value = 0;
   const char *p = str;

   // 先頭の文字がマイナスだったら、一文字進める
   if( *p == '-' )p++;

   // *p が 0 から 9 をはみ出したら終了
   while( *p >= '0' && *p <= '9' )
   {
      // valueを10倍
      value *= 10;

      // 文字を正しい整数に直して、一文字進めてvalueに渡す。
      value += *p++ - '0';
   }

   // 先頭がマイナスだったら、value をマイナスにする
   if( *str == '-' )value = -value;

   return value;
}

意外と簡単に実装できました。

※間違いなどがありましたら、報告してもらえるとうれしいです。

sprintf関数の実装(簡易版) 

前から興味のあった「sprintf関数」を実装してみたいと思います。
しかし、変換指定文字列の "%x"・"%o"・"%f"・"%e"などの実装が面倒なので
今回は、"%c"・"%s"・"%d" の三つを実装したいと思います。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。