【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )

举报
韩曙亮 发表于 2022/01/11 01:56:01 2022/01/11
【摘要】 文章目录 一、fseek 函数生成指定大小的文件 一、fseek 函数生成指定大小的文件 利用 fseek 函数可以移动指针的原理 , 文件打开后 , 直接调用 f...





一、fseek 函数生成指定大小的文件



利用 fseek 函数可以移动指针的原理 , 文件打开后 , 直接调用 fseek 函数 , 将指针向后移动指定偏移 , 然后在偏移后的位置写出一个字节数据 , 可以瞬间生成一个指定大小的文件 ;

如要生成 n n n 字节的文件 , 可以先将指针指向距离开始位置偏移 n n n 字节的位置 , 在此处写出一个空字节 , 即可精准的生成一个 n n n 字节的文件 ;


fseek 函数原型 :

#include <stdio.h>
int fseek(FILE *stream, long offset, int fromwhere);

  
 
  • 1
  • 2

fseek 函数的作用是 以 int fromwhere 参数为基准 , 偏移 long offset 个字节 , 该偏移可以是正数 , 也可以是负数 ;


这里特别注意 , 如果要精准的生成 100 字节大小的文件 , 需要从开始位置偏移 99 字节 , 然后指针指向第 100 字节的位置 , 此时写入一个字节 , 写入的这个字节就是第 100 字节数据 , 其前面 99 个字节都是空的 ;


生成 1000 * 1000 字节大小的文件 ;

特别注意 : 将指针指向 距离开始位置 1000 * 1000 - 1 字节偏移位置 , 在第 1000 * 1000 字节处 , 写入一个字节数据 ;


代码示例 :

#include <stdio.h>

int main()
{
    // 以写文本的方式向文件中写出数据
    FILE *p = fopen("D:/File/1000.dat", "w");

    // 将指针指向 距离开始位置 1000 * 1000 - 1 字节偏移位置
    // 这里特别注意 , 要预留出一个字节 , 用于做数据填充
    fseek(p, 1000 * 1000 - 1, SEEK_SET);

    // 在文件内部指针指向的第 1000 * 1000 字节处 , 写入一个字节数据
    char a = 0;
    fwrite(&a, 1, sizeof(a), p);

    // 关闭文件
    fclose(p);

    return 0;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

执行结果 :

在这里插入图片描述

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/121365842

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。