プログラミング言語 C でテキスト処理をしようと思うと何かと面倒なことは多い。 ただ行ごとに読むというだけのことにでもひどく手間をかけさせられてしまう。 それをなんとか工夫して実装しようとしている記事を読んだ。 もう 20 年ほど前のことになるが、私はチャット CGI を C で書いたことがあり、その中で似たようなことをやったというのを思い出した。 そのときの技法 (というほど大したものではないが) を紹介したいと思う。 考え方 結局ファイル全部を読むのだから一度に読んでしまえば良いではないかというのが基本的な発想だ。 fread 関数を使ってテキスト全部を読めば改行で区切られたひとつの文字列が出来上がる。 改行をヌル文字に置換えた上でそれぞれの行の先頭を指すポインタの配列を作れば、見掛け上は行ごとの文字列になっているかのように見える。 ちなみに、以下の実装では改行が 0d 0a の2バイ
![テキストファイルの全部を読んで行単位にする - 主題のない日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/0228447309d773d7ed6cf37a67a0fbd2dde50797/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2FS%2FSaitoAtsushi%2F20160129%2F20160129033040.png)