Char类型指针与fgets问题if

if(ret_val)是怎么判断的,rat_val不是首地址吗图片说明

原型  char *  fgets(char * s, int n,FILE *stream);

参数:

     s: 字符型指针,指向存储读入数据的缓冲区的地址。

     n: 从流中读入n-1个字符

     stream : 指向读取的流,stdin表示标准输入,就是用户在黑框里输入

返回值:

      1. 当n<=0 时返回NULL,即空指针。

      2. 当n=1 时,返回空串"".

      3. 如果读入成功,则返回缓冲区的地址。

      4. 如果读入错误或遇到文件结尾(EOF),则返回NULL.

通过if判断返回值ret_val来判断是否读入数据正确或者遇到文件结尾。

  其实 这里的两个语句是一样的,都实现的是同一个效果;
    NULL == 0; 虽然判断一个是否为空,写为:指针变量==NULL,但是其效果等效于==0;
    if(ret_val)  /* if(ret_val)  == if(ret_val != NULL) */