C言語のEOF

914 ワード

テスト文字数
#include"stdio.h"
main()
{
   int c;
   long n = 0;
   c = getchar();

   while(c != EOF)
   {
       ++n;
         c = getchar();
   }
   printf("%ld
", n); getch(); }

2点:getchar()をループの外に出すと、ループの中で必ず書いてください
EOFは手動入力のEOFではなく、windows下ctrl+z linux下ctrl+d
Linuxでは、新しい行の先頭にCtrl-Dを押し、EOF(行の途中でCtrl-Dを押すと「アライメント入力」を出力するキャッシュ領域を示すので、この場合は2回Ctrl-Dを押さなければならない)を表し、WindowsではCtrl-ZはEOFを表す.(ちなみにLinuxでCtrl-Zを押すと、そのプロセスを中断し、バックグラウンドでハングアップし、fgコマンドでフロントに戻すことができます.Ctrl-Cを押すとプロセスを終了します.)では、本当にCtrl-Dを入力したい場合はどうしますか?この場合はCtrl-Vを押してからCtrl-Dを入力しなければなりません.これはEOF信号です.Ctrl-Vは「字面の意味」で次の入力を解読し、「字面の意味」でCtrl-Vを入力したい場合は、2回連続で入力すればよい.
#include"stdio.h"
main()
{
   int c;
   long n = 0;
   while((c = getchar()) != EOF)
   {
       ++n;
   }
   printf("%ld
", n); getch(); }

質問:EOFをカスタマイズすると、ファイルまたは標準ストリームの終了かどうかを判断します.