1行分の文字列が転送されます。1行分の文字列が転送されます。返すことはありません。呼ばれると、バッファ内の文字列の先頭の文字が返されるだけです。readシステムコールを呼び出し、キー入力待ちになるのです。入力すると、81文字が標準入力バッファに転送されます。79文字と改行が出力されるのです。呼び出し、キーボード入力バッファに文字をため込むためにキー入力待ちになります。2文字を改行を出力します。したがって、この説明では解決できない現象が出るかもしれません。1年前かずまさん、詳しく書いて頂きありがとうございます。つまるところ、キーボード入力バッファと標準入力バッファの2つがあり、キーボードで入力された文字列はキーボード入力バッファに貯められるので、文字の削除が可能であり、enterやctrl+Dを入力する事により、キーボード入力バッファに貯められた文字列が転送され、標準入力バッファに送られると言う事なんですね。81文字入力された文字列はsize-1により79文字目でwhileを抜け、breakされ、mainに戻りputsされ、2週目でbuf[0],[1]に残りの2文字が入る訳ですね。最後に入力待ちで行頭にenterを入力すると'\n'を返し改行するんですね。理解出来てなかったのを、ここまで丁寧に教えて頂いたお陰で頭の中がスッキリしました。本当にありがとうございます。FILF構造体の所がイマイチ理解できませんでしたが、後でネットで調べてみます。1年前MinGWは大学で使っているコンパイラと比べると少し扱いにくいと思っていました。プログラムを実行する際、ctrl+Dとenterを押すんですが、ctrl+Zとenterを押した方が、大学で使っているコンパイラと同じ動きをしてくれる時が多いです。ミクプラは自由にリンクできます。