コピー2018.06.04自作tail続きです。前回は、ファイル全体を読み込んで、末尾10行を表示するプログラムを作りました。末尾部分の抽出だけでなく、中間部分や、行指定して抽出する機能も入れていく予定です。何より、tailの肝である、ファイルを後方から読み込み始める機能が一番に必要ですが。今回は、そのファイル後方から読み込み始めるためのfseekについて、簡単に動きを確認していこうと思います。このようなプログラムで実験します。10行目でfseekを使っていますが、第3引数にSEEK_ENDが指定されています。これでファイル末尾を指定します。Byte前を指定したことになります。Byteを表示するプログラムです。2行だけ表示されましたが、改行がそれぞれ1Byte入るので、3文字+2改行で5Byteが表示されたということになります。次に、オフセットにファイルサイズよりも大きな数字を指定してみます。-1000を指定し、合わせてperrorでエラーメッセージも表示してみます。ファイル全体が表示されました。fseekで末尾から-1000を指定したので、fseekの結果でファイル読み出し位置が先頭に移動したように見えるかもしれません。エラーが返っていることから分かるように、fseekは失敗しています。ファイル読み出し位置は初期値であるファイル先頭のまま移動していなかった、ということになります。確認のためfseekを2回使ってみます。1回目は成功させ、2回目で失敗させています。Byte前に変更され、2回目のfseekではエラーとなり、読み出し位置は変わってないので、同じく末尾5Byteが表示されました。次はftellで、現在のファイル読み出し位置を確認しつつ、fseekを使っていきます。fopenしてすぐに、ftellすると、読み出し位置は先頭である0が表示されます。fseekをSEEK_ENDをオフセット0で実行すると、ファイル末尾である51という数字が表示されました。次にfseekをSEEK_ENDをオフセット-5で実行しているので、51から5を引いた数、46と表示されました。当然ですが、ファイル末尾の読み込み位置は、ファイルサイズと同じ数字が得られます。自作のtail(その7)前回まではByte単位でしたが、今回から行単位の抽出処理を作っていきます。記憶がなくなってしまうのは、自分も周囲も辛いでしょうねえ。最近(おそらくセイバーを見つけた時から)、Vim熱が出てきたので、Vimの記事が多くなって行く予感。Vim...仕分け中numfmtで数字を読みやすく(その3)numfmt続きです。空白や改行だけでなく、区切り記号を指定することができます。いつものように確認用の変換前データを作成。暗い印象を受けるのは、暗闇のシーンが多いからでしょうか。3話で一旦視聴を中断。つまらなくはないのですが、他に見るアニメがたくさんあるので、休日にとっておこうかと思います。魔法少女アニメですね。原書と言われる魔法の本に選ばれて魔法少女になるようです。本の虫の主人公は魔法の訓練中っぽいです。ソフトウェアのツールは、ほとんど魔法のツールだなあと思います。傲慢な将軍、侯杰(こう・けつ)(アンディ・ラウ(劉徳華))が、家族を失ったことが切っ掛けで出家し、改心し人々を救います。改心前と後では、まったくの別人。すごく魅せてくれます。仕分け中スポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。