[2366] Re:ポインタ完全制覇 LIST 4-4 realloc.c
投稿者:(ぱ)こと管理人
2024/03/03 23:56:35
>>①で、入力を終えるには、Windowsなら、数値をいくつか入力後、
>>Ctrl+Z を押してからENTERを押してください。
>
>このような一時停止、再開操作をするプログラムを初めて知りました。
>while(...,stdin)で、たしかに終わりどころは・・・・と思ってもいました。
ちょっと不安を感じるのですが、このプログラムで「一時停止、再開動作」を
しているのは、fgets()のところで入力待ちの時に一時停止、入力してENTERを
押したら再開、というところです。しかしこれはgetchar()だろうが
scanf()だろうがfgets()だろうがキーボードで入力待ちになったら発生することです。
while (fgets(buf, 256, stdin) != NULL) {
…
というループが終了するのは、見ての通りfgets()がNULLを返した時です。
fgets()がNULLを返すのは、ファイルの終わりが来た時で、標準入力
(デフォルトではキーボード)で、ファイルの終わり(EOF: End Of File)を
示す手段が、WindowsではCtrl+Z、ENTERだということです。
Macは私は持ってませんが、ターミナルでEOFを示す方法は、(UNIXと同じく)
Ctrl+Dだと思います。