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

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

文章目录

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





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


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


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



fseek 函数原型 :


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


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;
}


执行结果 :


目录
相关文章
|
3天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
2天前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
7 1
|
2天前
|
程序员 编译器 C语言
C语言之函数与参数
C语言之函数与参数
5 0
|
3天前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
4天前
|
存储 C语言
C语言函数的返回值
C语言函数的返回值
7 0
|
5天前
|
C语言 Windows
C语言中的fopen与fclose函数详解
C语言中的fopen与fclose函数详解
11 1
|
5天前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
13 0
|
10月前
|
存储 缓存 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(下)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(下)
|
10月前
|
存储 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(中)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(中)
|
10月前
|
编译器 数据库 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(上)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(上)