1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C言語の標準関数を自作する:このシリーズについて

1
Last updated at Posted at 2026-08-14

C言語の標準関数を自作する:このシリーズについて

目次


はじめに

C言語には、普段何気なく使っている標準関数がたくさんあります。

strlen()strcmp()strcpy()……。

普段は当たり前のように使っていますが、

「これ、自分で作ってみたらどうなるんだろう?」

と思ったことはありませんか?

私はあります。

ということで、C言語の標準関数を自作してみるシリーズを始めることにしました。

……と言っても、別に新しいことを思いついたわけではありません。

C言語を勉強していると、一度くらいは、

「strlenくらいなら自分でも作れそう」

と思う瞬間がありますよね。

では、実際に作ってみましょう。

というのが、このシリーズの始まりです。


このシリーズの目的

このシリーズの目的は、標準関数を自作することそのものではありません。

標準関数を題材にして、C言語への理解を深めることが目的です。

例えば strlen() であれば、

  • 文字列とは何なのか
  • '\0' とは何なのか
  • ポインタはどのように扱われるのか
  • size_t とは何なのか
  • 配列とポインタにはどのような関係があるのか

といった、C言語では基本的な内容を改めて考えることになります。

さらに、単純にコードを書いて終わりにするのではなく、

仕様を確認する → 要件を決める → 設計する → 実装する → テストする

という流れも意識して進めていきます。

「標準関数を自作してみた」というだけの記事ではなく、
一つの関数を題材に、C言語のコードをどう考えて作っていくのかも見ていければと思っています。


このシリーズのルール

せっかくなので、普通に標準関数を自作するだけでは面白くありません。

いくつかルールを決めて、自分自身を縛りながら進めていきます。

標準Cライブラリの関数は使わない

基本的に、標準Cライブラリの関数には頼りません。

例えば strlen() を自作するのであれば、当然ながら標準ライブラリの strlen() は使いません。

自分で作ろうとしているものを、そのまま使ってしまったら意味がありませんからね。

システムコールは利用OK

一方で、OSが提供するシステムコールは利用OKとします。

標準Cライブラリの関数とシステムコールは別物なので、ここは区別します。

このルールが後々どう効いてくるのかは……そのうち分かるかもしれません。

独自のコーディング規約を守る

さらに、このシリーズでは独自のコーディング規約も設定しています。

「せっかく自作するなら、普段とは違うルールで縛ってみよう」

という、ほぼ縛りプレイです。

どのような規約を設定しているのか、なぜそんな規約にしたのかについても、気が向いたら今後の記事で紹介する.....かもしれません。


どんな関数を作るのか

まずは、比較的分かりやすい文字列操作系の関数から始めます。

例えば、

  • strlen()
  • strcmp()
  • strcpy()
  • strchr()

などです。

実際にどの関数を、どの順番で作っていくのかは、その時の気分や難易度などによって変わるかもしれません。

最初から「標準Cライブラリを全部自作します!」などと宣言してしまうと、自分で自分の首を絞めることになりますからね。というよりも、全部は無理です。一体いくつあると思ってるんですか。

どこまで続くのかは、私にも分かりません。

飽き性なので途中で飽きるかもしれませんし、モチベーションが続けば意外と長く続くかもしれません。

そのあたりも含めて、気長に見守っていただければと思います。


記事では何をするのか

各記事では、対象となる標準関数について調べたうえで、自作関数を作っていきます。

例えば strlen() であれば、まず標準 strlen() の仕様を確認します。

そのうえで、

  • 自作関数にどのような要件を設定するか
  • どのような設計にするか
  • 実際にどう実装するか
  • どのようにテストするか

といったことを順番に考えていきます。

ただし、すべての記事を完全に同じ構成にするとは限りません。

関数によって難易度や考えるべきポイントが異なるため、その関数に合わせて内容や構成を変えることもあります。

あくまで、

「その関数を自作するために必要なことを、その都度考えていく」

というスタンスです。


まずは strlen() から

ということで、最初の関数として strlen() を自作しました。

文字列の長さを取得するだけの非常にシンプルな関数です。

果たして、標準 strlen() を使わずに、自分で同じような関数を作ることができるのでしょうか。

……まあ、strlen() くらいなら簡単そうですよね。

実際にどのような仕様なのかを確認し、要件を決め、設計して実装してみました。

興味があれば、ぜひ読んでみてください。

C言語の標準関数を自作する:文字列処理 strlen()


おわりに

このシリーズでは、標準Cライブラリの関数を題材にして、C言語について改めて考えていきます。

普段何気なく使っている関数も、実際に自分で作ろうとしてみると、

「あれ? これってどういう仕様だっけ?」

となることがあります。

そして、調べて、考えて、実装して、テストしてみる。

その過程そのものが、C言語を理解する良い勉強になるのではないかと思っています。

……とはいえ、どこまで続くかは本当に分かりません。

モチベーションが続く限り、ぼちぼちやっていきます。

もし興味があれば、ぜひ一緒に「標準関数って、実際どうなってるんだろう?」を見ていきましょう。


🔗 関連記事・関連リンク

この記事の最新アップデートや、このシリーズの関連記事は以下のリンクからご覧いただけます。

内容は基本的に同じですので、お好みのサイトでお読みください。

🟢 Zenn

🔵 Qiita

🧡 note


1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?