$ を追加する$ を追加するread()は読み込みに失敗しなければ返値として実際に読み込んだバイト数を返します。 したがって、入力したバイト列を操作することは、readの返値を変数に代入しておき、 その値までくりかえすループを書くことで実現できます。 たとえば、chocolate.cやstrawberry.cで行っている次のようなコードをよく書きます。
while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
for (j = 0; j < (size_t)len; j ++) {
(略)
}
(略)
}
注意すべきことがいくつかあります。
for (p = buf; *p != '\0'; p++) { // read()で入力したものには使用不可
use(*p);
}
for (p = buf; *p != '\n'; p++) { // read()で入力したものには使用不可
use(*p);
}
標準入力からテキストを入力し、コマンドラインオプションに応じて以下の加工を行って出力するプログラムを書け。
入出力にC標準ライブラリを使用せよ。
入出力にUNIXシステムコールを使用せよ。
標準入力からテキストを入力し、表示文字(isprint()が真を返す文字)の総文字数を標準出力に出力し、さらに、コマンドラインオプションに応じて以下も出力するプログラムを書け。
複数の値を出力する場合は、空白区切で一行で出力し、順序は上記のとおりとする。
入出力にC標準ライブラリのgetcharとputcharを使用せよ。
入出力にUNIXシステムコールのreadとwriteを使用せよ。
printfは使用不可だがsnprintfは使用可。