美文网首页
文件——随机读写

文件——随机读写

作者: pangdong | 来源:发表于2018-07-14 10:16 被阅读0次

文件位置标记及其定位

顺序读写文件时,每读写一个数据后,文件位置标记顺序向后移一个位置,然后在下一次执行读写操作时把数据写入指针所指的位置。
直到把全部数据读写完,此时文件位置标记在最后一个数据之后。

如若需要人为移动文件标记的位置来读写操作,可使用以下函数:

rewind(文件类型指针)

    rewind()函数使文件位置标记指向文件开头; 
    rewind(fp_read);

fseek(文件类型指针,位移量,起始点)

    fseek()函数改变文件位置标记 

    起始点含义: 
        起始点         名字      用数字标记 
        文件开始位置  SEEK_SET    0
        文件当前位置  SEEK_CUR    1 
        文件末尾位置  SEEK_END    2 
    位移量:
        位移量指以起始点为基点,向前移动的字节数。
        位移量应是long型数据(L) 
eg:
    fseek(fp,100L,0);   //将文件位置标记向前移到离文件开头100个字节处 
    fseek(fp,50L,1);    //将文件位置标记前移到离当前位置50个字节处 
    fseek(fp,-10L,2);   //将文件位置标记从文件末尾处向后退10个字节          

实例

随机读写数据文件data_stu.dat;将文件中的第1、3、5、7、9个学生数据输出在屏幕上,并保存到新文件data_stu_singular.dat。

/*
    Name: random_fr_fw
    Author: Liweidong
    Date: 13/07/18 17:14
    Description: 随机读写数据文件  
        将文件中的第1、3、5、7、9个学生数据输出在屏幕上,并保存到新文件 data_stu_singular.dat
*/

#include <stdio.h>
#include <stdio.h>
#define SIZE 10

struct student{
    char name[20];
    int num;
    int age;
    char addr[20];
}stu[SIZE];

void main() {
    FILE *fp_read,*fp_write;
    int i;

    if( !(fp_write = fopen("data_stu_singular","wb"))) {
        printf("cannot open the file data_stu_singular!\n");
        return;
    }   
    if( !(fp_read = fopen("data_stu.dat","rb"))) {
        printf("cannot open the file data_stu.dat.txt!\n");
        return;
    }
    
    printf("name\tnum\tage\taddr\n");
    for(i=0; i<SIZE; i+=2) {
        fseek(fp_read,i*sizeof(struct student),0);
        fread(&stu[i],sizeof(struct student),1,fp_read);
        fwrite(&stu[i],sizeof(struct student),1,fp_write);
        printf("%s\t%d\t%d\t%s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
    }
    
    fclose(fp_read);
    fclose(fp_write);
    printf("Successful storage!\n");
}

运行结果

运行结果

成功读取数据。

传送门

文件:字符形式输入输出
文件:字符串输入输出
文件:二进制 块读写

相关文章

  • 文件——随机读写

    文件位置标记及其定位 顺序读写文件时,每读写一个数据后,文件位置标记顺序向后移一个位置,然后在下一次执行读写操作时...

  • 随机读写文件

    //******** 注意:可移植性问题 ************//换行符不一样的问题,linux下为"\n",...

  • 读写文件1

    //读写分为顺序读写(从文件开始读写)和随机读写(比如定位文件指示器后读取第1000个字节位置的字符) //***...

  • IO

    1, RandomAccessFileread/write/seek都是native实现,随机读写文件。2, St...

  • 磁盘存储性能测试

    测试方案 两个维度随机读写频繁的应用,如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS...

  • python文件的随机读写

    在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取 例: #打开一个已经存在的文件 f=open...

  • 容易弄混的python与matlab语句

    读取目录下文件名 格式转换 字符串 读写文件 图片 opencv + matplotlib 打乱list 随机数 ...

  • ★15.I-O系统

    File 相关类 RandomAccessFile:独立的随机访问文件读写类。 示例:列出文件夹中的目录 Inpu...

  • 2021-09-21 IO流(RandomAccessFile)

    RandomAccessFile 1.随机访问文件,自身具备读写方法2.通过skipBytes(int x),se...

  • RocketMQ和Kafka对比

    1、扩展性上 Kafka的吞吐量最高,RocketMQ所有的消息均是顺序写文件(磁盘顺序读写速度超过内存随机读写)...

网友评论

      本文标题:文件——随机读写

      本文链接:https://www.haomeiwen.com/subject/ecpepftx.html