JUNのブログ

JUNのブログ

活動記録や技術メモ

C/C++

シェル実装の課題を完走した

42Tokyoで minishell という課題があり, 完走したので感想書きます. minishellについて 実装 シェル全体の構成 入力処理 Lexer & Parser Lexer (字句解析) Parser (構文解析) CommandExecution リダイレクションの処理 heredocument プログラムの実行 ビルト…

フラクタル((マンデルブロ|ジュリア)集合)生成プログラムを書いた

42の課題でフラクタル(マンデルブロ集合とジュリア集合)を描画する課題があり, それが完了したので感想とか色々. フラクタルとはなんぞや Wikipediaによると 図形の部分と全体が自己相似(再帰)になっているものなどをいう。 フラクタル - Wikipedia らしい…

C言語でレイトレーシングプログラムを作った

初めに C言語で3Dゲームを作ったという記事の中で言及した通り, 42のLv2ではレイキャスティングで3Dゲームを作る cub3D と, レイトレーシングプログラムを作る miniRT という課題の2つがあり, 自分は cub3D を選択した. jun-networks.hatenablog.com しかし,…

C言語で3Dゲームを作った

42の課題の1つであるcub3Dを今日クリアしたので感想を書く. 課題について 作ったもの 仕組み 壁の描画 プレイヤーの座標などの表し方 光線を飛ばす 壁までの距離を求める 壁を描画する スプライトの描画 スプライトの描画に必要な情報の計算 世界座標系から…

glibc strlen コードリーディング

この間のget_next_lineの記事で標準Cライブラリのstrlen()が自分が書いたものより圧倒的に速いという話をしました. jun-networks.hatenablog.com なぜ標準ライブラリのstrlen()が速いか調べてみたら結構奥が深かったので今回はGNU Cライブラリ(glibc)の strl…

C言語でファイル(ファイルディスクリプタ)から1行ずつ取得する関数を作った

10月から42Tokyoで学んでいるのですが, そこでやった課題の内容及びコードの公開がOKってことなんで, これから気が向いたら42の課題と自分の解答を記事にしていこうと思います. (ただし, 課題PDF自体は再配布や外部への公開が禁止されているので, 課題内容は…

C言語でわかる? UTF-8

そういえばC言語でマルチバイト文字(UTF-8)の出力ってどうやってするんだろうと思って, 色々試したのでここに書き残しておく. ちなみに今回は基本的に画面出力にはUNIXのシステムコールを呼び出す write() を使う. write()に関しはmanコマンドでマニュアルを…

printfを使わずにメモリアドレスを取得する

はい. こんにちは. 今日は printf を使わずにメモリアドレスを表示する方法について書きます. 大体C言語の教科書などでは変数のメモリアドレスを表示するのに以下のようなコードを書くと思います. #include <stdio.h> int main(){ int a = 10; printf("data: %d addre</stdio.h>…