读取文件结束的判定的概念,使用方法和文件缓冲区的位置

简介: 读取文件结束的判定的概念,使用方法和文件缓冲区的位置
//读取文件结束的判定
//1.在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束,
// feof应用于当文件读取已经结束时,判断是读取失败还是遇到文件未结束
// 
//2.fgetc函数在读取结束时,返回的是EOF,正常读取时,返回的是读取到字符的ASCII
// 
//3.fgets函数在读取结束时,返回的是NULL,正常读取时,返回的是存放字符串的起始地址
//
//4.fread函数在读取时,返沪的是实际读取的完整元素的个数,如果发现
//读取到的完整的元素个数<指定元素个数,则是最后一次读取了
//写代码把text.txt文件拷贝一份,生成test2.txt
int main()
{
    FILE* pfread = fopen("test.txt", "r");//读
    if (pfread == NULL)
    {
        return 1;
    }
    FILE* pfwrite = fopen("test2.txt", "w");//写
    if (pfwrite = NULL)
    {
        fclose(pfread);
        pfread = NULL;
        return 1;
    }
    //文件打开成功
    //读写文件
    int ch = 0;
    while (ch = fgetc(pfread!=EOF));//判断是否结束
    {
        fputc(ch, pfwrite);
    }
    if (feof(pfread))//如果为真
    {
        printf("遇到文件结束,文件正常结束\n");
    else if(ferror(pfread))
    {
        printf("文件读取失败结束\n");
    }
    }
    //关闭文件
    fclose(pfread);
    pfread = NULL;
    fclose(pfwrite);
    pfwrite = NULL;
    return 0;
}
//文件缓冲区   程序数据区--->输出缓冲区--->硬盘--->输入缓冲区--->程序数据区
相关文章
|
算法
初探PID—速度闭环控制
本文简单介绍了什么是PID,PID的作用,给出了PID实现程序。
424 0
QT软件开发: QPlainTextEdit当做日志显示窗口
QT软件开发: QPlainTextEdit当做日志显示窗口
964 0
QT软件开发: QPlainTextEdit当做日志显示窗口
|
NoSQL Java Redis
介绍Redis的各种用途以及使用场景
介绍Redis的各种用途以及使用场景 Redis 一、为什么使用 解决应用服务器的cpu和内存压力 减少io的读操作,减轻io的压力 关系型数据库的扩展性不强,难以改变表结构 二、优点: nosql数据库没有关联关系,数据结构简单,拓展表比较容易 nosql读取速度快,对较大数据.
12032 1
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
|
存储 C语言 芯片
C/C++ stm32基础知识超详细讲解(系统性学习day14)
C/C++ stm32基础知识超详细讲解(系统性学习day14)
|
移动开发 C++
花最少的时间点亮OLED之RT-Thread u8g2之(DIY一个小小天气站+万年历)
花最少的时间点亮OLED之RT-Thread u8g2之(DIY一个小小天气站+万年历)
275 0
|
编译器 C++
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(二)
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(二)
|
监控 网络协议 安全
【网络篇】第九篇——多线程版的TCP网络程序
【网络篇】第九篇——多线程版的TCP网络程序
【网络篇】第九篇——多线程版的TCP网络程序
编码基本功:类成员要加前缀,这样可以避免同名变量
编码基本功:类成员要加前缀,这样可以避免同名变量
359 0