区分 EOF 和 Getchar() 函数的错误

Distinguish EOF from error for the Getchar () function

重写程序,区分EOF和Getchar()函数的错误。也就是说,getchar()returns既是在error的过程中,也是在EOF文件的末尾,你需要区分这一点,输入不应该是通过FILE STREAM和handle putchar() function errors.

#include <stdio.h>
  
int main() { 

    long nc;
    nc = 0;
    while (getchar() != EOF)
    ++nc;
    printf ("%ld\n", nc);
    
  }

您可以检查 feof() or ferror()(或两者)的 return 值,使用 stdin 作为 FILE* 参数:

#include <stdio.h>
  
int main() { 

    long nc;
    nc = 0;
    while (getchar() != EOF) ++nc;
    printf ("%ld\n", nc);
    if (feof(stdin)) printf("End-of file detected\n");
    else if (ferror(stdin)) printf("Input error detected\n");
//  Note: One or other of the above tests will be true, so you could just have:
//  else printf("Input error detected\n"); // ... in place of the second.
  }