判断读文件结束的条件,该如何处理

判断读文件结束的条件判断文件结束可以用C++里fstream的成员函数.eof(),不过我没有用过,所以我用C操作文件

判断读文件结束的条件
判断文件结束可以用C++里fstream的成员函数.eof(),不过我没有用过,所以我用C操作文件的方法,下面是一个读文件的程序
#include   <iostream>
using   namespace   std;

void   main()
{
FILE   *fp   =   fopen( "t.txt ", "r ");
char   OneChar;

if   (fp   ==   NULL)
exit(0);

while   (fgets(&OneChar,1,fp)!=NULL)
{
cout < <OneChar;
}
}

但是运行后是一个死循环,永远都不可能有fgets(&OneChar,1,fp)!=NULL,和我想得不对,fgets返回的是一个字符指针,如果文件读完fgets应该读失败,返回NULL,我究竟哪里想错了

[解决办法]

int main()
{

FILE *fp = fopen( "test.txt ", "r ");
char OneChar;

if (fp == NULL)
exit(0);

while ((OneChar = fgetc(fp)) != EOF)
{
cout < <OneChar;
}

return 0;
}
[解决办法]
NULL的值是0,而EOF的值是-1。两者是不同的意义,不能混用。
[解决办法]
NUL一般是用来判断指针或者字符串是否为空