美文网首页
文件指针操作2

文件指针操作2

作者: wangxn | 来源:发表于2016-03-24 16:47 被阅读0次
  • 主要使用的函数
    功能比较强悍的主要就是fseek()函数了
    int fseek(FILE * pf, long offset, int WHENCE)
  • 主要使用的场景
    1. 移动到文件中的指定位置,替换该位置的数据
    2. 在文件中遍历搜索给定的元素, 并替换该位置的数据
  • 如下一个小demo,集合了需求的测试
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    void fseek_test(FILE * pf); void printf_file(FILE * pf, int size); int search_and_replace(FILE * pf, int size,double beReplaced, double replace);
    int main(void){
    char * path = "E:/test.bin";
    FILE * pf;
    pf = fopen(path, "wb+");
    if(pf == NULL){
    perror("open file err");
    return -1;
    }
    fseek_test(pf);
    if(pf != NULL){
    fclose(pf);
    }
    getchar();
    return 0;
    }
    void fseek_test(FILE *pf){
    double src[10] = {0.1, 0.2, 0.3, 0.4, 0.5, 1.6, 1.7, 1.8,1.9, 2.0};
    int rct = fwrite(src, sizeof(double), 10, pf);
    if(rct != 10){
    perror("write data err");
    clearerr(pf);
    return;
    }
    printf("%s\n", "first the data in the file:"); printf_file(pf, 10); fseek(pf, 0 - 3 *sizeof(double), SEEK_END); double tmp = 18.1; fwrite(&tmp, sizeof(double), 1, pf); printf("%s\n", "change the eight double to 18.1:"); printf_file(pf, 10); if(search_and_replace(pf, 10, 0.5, 100.1) >= 0){
    printf("%s\n", "seach double 0.5 and replace it to 100.1,then show all number");
    printf_file(pf, 10);
    } }
    // param pf : 文件指针 // @param size : 元素总个数 // @param beReplaced : 在文件中需要搜索的并且需要被替换的元素 // @param replace : 需要被替换为的结果元素
    int search_and_replace(FILE * pf, int size, double beReplaced, double replace){
    rewind(pf);
    int i;
    int retVal = -1;
    double tmp = 0;
    for(i = 0; i<size; i++){
    int ret = fread(&tmp, sizeof(double), 1, pf);
    if(ret == 1 && tmp == beReplaced){
    fseek(pf, 0 - sizeof(double), SEEK_CUR);
    tmp = replace;
    fwrite(&tmp, sizeof(double), 1, pf);
    retVal = i;
    break;
    }
    }
    return retVal;
    }
    // @param pf : 文件指针 // @param size : 文件中元素的个数
    void printf_file(FILE * pf, int size){
    rewind(pf);
    double * src = ( double * ) malloc(sizeof(double) * size);
    memset(src, 0, sizeof(double) * size);
    int ret = fread(src, sizeof(double), size, pf);
    if(ret != size){
    perror("read file err");
    clearerr(pf);
    free(src);
    return;
    }
    int i;
    for(i = 0; i<size; i++){
    printf("%f\t",src[i]);
    if((i + 1)%2 == 0 && i != 0){
    printf("\n");
    }
    }
    free(src);
    rewind(pf);
    return;
    }

相关文章

  • 文件指针操作2

    主要使用的函数功能比较强悍的主要就是fseek()函数了int fseek(FILE * pf, long off...

  • 2018-09-05

    c语言文件操作 文件操作流程:1.打开文件 2.操作文件 3.关闭文件 文件类型指针:File* fp; 文件打开...

  • 2.C标准I/O

    2 C 标准I/O 2.1 文件指针 标准I/O并不直接操作文件描述符,而是通过文件指针(file pointer...

  • python 03文件操作

    文件打开操作 文件常用操作 文件指针需要注意的是,进行文件操作的时候是存在文件指针的 进阶操作--文件修改的两种操...

  • 文件指针操作

    三个函数: //移动文件指针到文件开始位置void rewind(FILE *pf) //获取文件当前指针距离文件...

  • Python学习笔记4

    文件 操作模式 文件指针的定位 遍历 其他操作 文件相关案例 文件 操作模式 r# 以只读方式打开文件(默认),文...

  • C语言学习之--实现文件的读写

    第三部分文件操作部分 一. c语言文件指针 定义指向一个文件的指针变量FILE *指针变量名;FILE *fp =...

  • day11 文件处理详解

    Ⅰ 文件的打开模式 控制文件读写操作的模式 r 只读操作 只读(默认的):在文件不存在时报错,文件存在时文件指针跳...

  • C语言-结构体,文件操作

    1、结构体 结构体统一取别名,兼容多平台编译器 2、结构体指针 注意结构体指针采用->访问属性 3、文件操作 读文...

  • [arm64]5、指针

    1、指针的基本操作 1.1、指针相加减 1、指针变量加减 2、指针的指针加减 1.2、指针的汇编 1.3、空指针异...

网友评论

      本文标题:文件指针操作2

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