C语言---14文件操作---02文件内容的随机读写及错误检测

 因为是以函数的形式完成整个知识点的梳理,可以直接看程序源码进行直接学习哦!!!

在这里下载源码哦!!!

欢迎大家参与讨论、纠错~

一、文件的随机读写

(一)知识点引入

  • 前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据

  • 在实际问题中:要求只读写文件中某一指定的部分,例如:读取文件第200字节处的30个字节

  • 解决方法:可以移动文件内部的位置指针到需要读写的位置再进行读写(随机读写)

  • 实现随机读写的关键:按要求移动位置指针(文件的定位)

  • 完成文件定位的函数有:rewindftellfseek函数 

void test16()
{
    char buf[128] = "";
    FILE* fp = NULL;
    fp = fopen("test16.txt", "w+");
    if (fp == NULL)
    {
        perror("fopen");
        return;
    }

    // 先往文件中写入一个字符串"hello file"
    fputs("hello file", fp);
    fclose(fp);

    // 打开一个文件进行操作后需要关闭再重新打开文件让文件的流指针回到文件首部
    fp = fopen("test16.txt","r");
    // 在从文件找那个读取该字符串
    fgets(buf, sizeof(buf), fp);
    printf("buf = %s\n", buf);
    fclose(fp);
}

不能刚写入就读出,因为这时候系统还不知道你到底要写入多少字节的内容,所以系统会自己预留出一部分的空间,这部分的空间里存储的内容未知(乱码)。在这个时候进行的读操作其实是从文件写入结束的位置开始读取,也就是对那部分未知空间进行读取,得到的内容并不是自己想要的(这里很重要哦!!!)

  • 解决上述文件问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盾山狂热粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值