zoukankan      html  css  js  c++  java
  • [Linux]标准IO之EOF

    一、概述

    无论是出错,还是文件到达了末尾(EOF),都返回常量EOF,那么要判断一个文件究竟是出错还是真正到达了文件末尾,需要调用ferror和feof两个函数:

    int ferror(FILE* fp);
    int feof(FILE* fp);

    注意:文件指针只有在经过至少一次标准I/O读写操作后才可以使用这两个函数去检测文件指针的EOF状态;

    二、示例

    创建一个这样的程序c33:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define BUFFSIZE 8
    
    int main(void)
    {
        char* buff = malloc(BUFFSIZE);
        char* receive = NULL;
        while((receive = fgets(buff, BUFFSIZE, stdin)) != NULL)
        {
            printf("%s|
    ", receive);
        }
        printf("ferror: %d
    ", ferror(stdin));
        printf("feof: %d
    ", feof(stdin));
        return 0;
    }

    向程序输入一个空文件c33.txt,它的输出是:

    [root@localhost temp]# ./c33 < ./c33.txt
    ferror: 0
    feof: 1

    可见第一次用fgets对stdin的读取就返回了NULL指针,然后用feof函数判断的结果为真;

  • 相关阅读:
    jwt
    mybatis的回顾
    swagger
    MySQl总结
    Java异常
    常用Dos命令
    C++初级项目——机房预约系统
    C++中将数字型字符串转变为int类型的方法
    C++中int *a; int &a; int & *a; int * &a
    #define_CRT_SECURE_NO_WARNINGS的用法
  • 原文地址:https://www.cnblogs.com/yiyide266/p/13550166.html
Copyright © 2011-2022 走看看