見出し画像

42tokyoでの第一歩”Libft”をクリア

42tokyoの最初の課題「Libft」をクリアしたのでまとめます!
(クリアしたのは9月頭なので、クリアからかなり時間が経ってしまっていますが、、、)


どんな課題なの?

This project is your very first project as a student at 42. You will need to recode a few functions of the C standard library as well as some other utility functions that you will use during your whole cursus.

課題提出ページより抜粋

最初の課題「libft」は、指定された関数をまとめた自作ライブラリ”libft”を作成してねと言う課題です。

42tokyoでは標準ライブラリの使用が許可されていないため、この課題を通じて自身でライブラリを再構築することが求められます。また、今後の課題でもこの作成した"libft"を使用していくことになります。

さらに、今後は、必要に応じて、このライブラリを拡張していく必要があります。

どんな関数が入っているの?

Part1:標準ライブラリ関数の再実装

  • is系関数(例: isalpha、isdigit)

  • str系関数(例: strlen、strlcat)

  • mem系関数(例: memchr、memcmp)

  • その他のよく使う関数(例: calloc、atoi)

皆さんご存じ”printf”は別の課題で実装します。

Part2:独自関数

42独自の関数を実装します。
例えば、

  • 受け取った二つの文字列を連結した新しい文字列を返す関数

  • 受け取った文字列を指定された文字で区切り、区切られた各文字列を返す関数

などを作成します。

Bonus:リスト操作に役立つ関数

必須課題ではなくBounus(できたらやってね)課題です。
今回自分は挑戦しました。
連結リスト操作に役立つ関数を作成します。
例えば、

  • リストのコンテンツに対して関数「f」を適用し、新しいリストを作成する関数

などを作ります。
線形リストについて学ぶことができます。

難しかったこと、学んだこと

manとの闘い

Part1では、エラー時の挙動も含めてオリジナル通りに動作するように実装しなければなりません。
今まで、manを読むことから避けてきましたが、さすがにmanを読まないと実装できなかったので、manを読むようになりました。
最初は嫌いだったmanですが、今ではmanに感謝しています。
manを読むことに慣れたのはすごい良かったと思います。
どの勉強でもそうですが、ドキュメントを疎かにしてはいけませんね(笑)

オーバーフローの処理・NULLガード

オーバーフローとNULLガードは、C言語の基本的な知識ですが、Libft作成当時はこれにかなり苦しめられました(´;ω;`)

ほとんどこれらのせいで、何回もやり直しになったと思います。
合計4回リトライし、5回目で合格しました(笑)
エラーハンドリングの大切さを改めて学ぶことができました。

終わりに

今回の課題で、レビューの大切さを再認識しました。
機械採点や、自分では気が付くことができなかったエラーや、余計なコード、さらに良い書き方など、レビューを通して学ぶことができました。

今回作ったライブラリは今後も使用し、適宜追加していくので、これからが楽しみです!

ではまた、次回のnoteで会いましょう(^▽^)/

この記事が気に入ったらサポートをしてみませんか?