システムコールのみを使用して、 catおよびnlに相当するコマンドである C でコーディングする必要がある場所を実行する演習があります。与えられたシステム コールは、open()、close()、read()、および write() です。
「cat」に相当するものは既に実行しており、正常に動作しているようです。「nl」を実行する必要がありますが、行ごとに記述する方法に問題があります。
考えられるのは、可能な限り少ないシステム コールを使用することです。
バッファで「\n」を見つける必要があることはわかっています。バッファをループして「\n」の位置を見つけ(Xと呼びましょう)、X個のバイトを標準出力に書き込むことができます。
しかし、バッファ内のすべての文字をループして行末を検索するのは私には適切ではありませんが、他にどのようにこれを行うことができるかわかりません...
重要な編集:
私の質問のポイントを見逃している人もいると思います...これを行う方法についての説明は必要ありません。それは私の問題ではありません。私はそれを行う方法を知っています (または非常に良いアイデアを持っています。まだ試していません)。「問題」は、行の終わりを見つけるために、バッファ、ファイル、またはその他のものを1文字ずつループするのが正しくないと感じることです(方法は関係ありません)。これが答えではないと言っているわけではありませんし、これを行うことは許可されていないと言っているのではありません。これを行うのは奇妙な方法のように思えます。それだけです...しかし、それが方法である場合、それが私の質問に対する答えです。
でも、みんなの助けに感謝します:)