linux操作系统day2(io文件处理)

news2024/9/22 19:25:39

二进制文件读写:  fread()/fwrite()

读:

size_t  fread(void  *ptr,  size_t size, size_t nmemb, FILE *stream);

功能:

      从指定的stream流对象中获取nmemeb个大小为size字节的数据块到ptr
      所在的本地内存中。

参数:

      ptr    要存储数据的本地内存一般是数组或者结构体指针
      size   单个数据块的元数据大小。最小单元的大小
      nmemb  要获取的数据块的个数,拷贝的数据块个数。
      stream 要获取数据的源文件流对象,如果是stdin表示从
      键盘获取数据,如果是fp文件则表示从普通文件获取。

返回值:

        成功 小于等于nemeb的整数,表示获取的数据长度
        失败 小于0,结尾 0;

写:

size_t fwrite(const void  *ptr,  size_t  size,size_t nmemb, FILE *stream);

功能:

      从ptr所在本地内存中取出nmemb个大小为size的数据块写入到stream流对应
      的文件流对象中。

参数:

      ptr 要写的数据块地址,一般是数组或者结构体指针
      size  要写的数据块元数据大小,单位是字节
      nmemb 要写的数据块的个数
      stream 要写的目标文件流对象。如果是stdout则表示数据会
      写到终端屏幕显示,如果是fp的普通文件则会写入到文件中。


返回值:

              成功 小于等于nmemb 的个数。
              失败 <0

struct person
    {
        char name[20];
        int age;
        char sex;
        char addr[100];
    }; 
    
    //保存到一个文件中?
    //fwrite();
    
    
    person per;sizeof(per)

注:
  fread fwrite 往往都是 处理 ,数据格式相对固定的数据 
  
  struct {
      
  };

                                                                打印构造体内容

 计算bmp图片文件的高和宽


定位操作:

1.fseek

int fseek(FILE *stream, long offset, int whence);//long -->signed long 


    功能:


          将stream流文件中的文件指针
          从whence位置开始
          偏移offset字节的长度

   
    参数:


          stream  要移动文件指针的目标文件流对象。 
               注意:不支持设备文件,一般用于普通文件。  
          offset  
                  要在文件内偏移的距离,单位字节。
                  如果值为整数,则向文件末尾偏移
                  如果值为负数,则向文件开头偏移
                  
          whence  偏移的起始位置,由系统定义的三个宏开始。
            SEEK_SET  文件的开头位置   offset 只能是正值 
            SEEK_CUR  文件的当前位置   offset 可正 可负 
                                       但是 
                                       如果当前位置与 SEEK_SET重合 offset 不能是负的 
                                       
            SEEK_END  文件的末尾位置   offset 可正 可负 
                                       正 --- 空洞文件 

                          
    返回值: 


        成功: 返回 0
        失败:  -1;
        eg:
        
        fseek(fp,100,SEEK_SET); //从头开始往后偏移100个字节 
        fseek(fp,-100,SEEK_SET);
        

如果从文件的指定位置向后偏移过程中已经超过了文件
的当前末尾位置,则会自动以'\0'来填充文件内容,从
而形成一种被称为"空洞文件" 的特殊文件。

产生空洞文件的操作:


1.进行偏移 
2.做一次写操作 
  fputc(0,fp);
  
  .downloading
  
用途:
   提前抢占磁盘空间

//获取文件大小:
     fseek(fp,0,SEEK_END);
     len = ftell(fp);
//定位到文件开头      
fseek(stream,0L,SEEK_SET); <==>rewind(fp);
//定位到文件尾部 
fseek(stream,0L,SEEK_END);

 2.    ftell

        long ftell(FILE *stream);
        
        功能:获取文件位置指示器的偏移量
        参数:求偏移量的文件流指针
        返回值:文件位置指示器到文件开头的偏移字节数

 3. rewind(fp);

        void rewind(FILE *stream)
        功能:
             获取当前文件流指针的具体位置,
             一般以文件开头到当前指针的字节数为返回值。
             
        参数:stream 要返回指针距离的文件流对象
        返回值:void

                                                                移动文件指针写入数据


      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多线程相关(3)

线程安全-上 乐观锁&#xff0c;CAS思想java乐观锁机制CAS思想 synchronized底层实现主要的三种使用方法底层实现 ReenTrantLock底层实现使用方法底层实现与synchronized区别 公平锁和非公平锁区别公平锁非公平锁公平锁效率低原因 乐观锁&#xff0c;CAS思想 java乐观锁机制 …

AI分析:使用Ubuntu系统对人的积极影响

我是一个程序员&#xff0c;但代码工作只占日常工作的20%&#xff0c;日常使用office&#xff0c;做报表&#xff0c;写周报&#xff0c;参与网络会议。 我用Ubuntu 22.04作为电脑系统&#xff0c;已经1年半了&#xff0c;今天&#xff0c;终于把系统更新到23.10版本&#xff…

#12解决request中getReader()和getInputStream()只能调用一次的问题

目录 1、背景 2、解决方案 2.1、自定义HttpServletRequestWrapper 2.2、JsonRequestHeaderParamsHelper 2.3、HttpServletRequestReplacedFilter 2.4、使用 1、背景 当前系统Content-Type为application/json&#xff0c;参数接收方式采用RequestBody和RequestParam&#…

云原生高级第一次作业

目录 实验需求&#xff1a; 第一个实验步骤&#xff1a; openEuler 二进制方式安装MySQL 8.0.x 1.首先需要获取软件包 2.然后安装tar和xz格式可进行解压工具 3.接下来就是安装MySQL 4.配置环境变量 5.登入并修改密码 6.停止服务脚本 7.提供配置文件 8.进入/etc/my.cnf…

Backtrader 量化回测实践(2)—— K线16主要形态定义(上)

Backtrader 量化回测实践&#xff08;2&#xff09;—— K线16主要形态定义&#xff08;上&#xff09; K线图形中的趋势线和价格走势能够反映市场的整体趋势&#xff0c;比如是否处于上涨或下跌趋势中。 用Backtrader做策略的时候&#xff0c;需要考虑K线形态&#xff0c;作为…

go RPC编程

1、golang中如何实现RPC golang中实现RPC非常简单&#xff0c;官方提供了封装好的库&#xff0c;还有一些第三方的库 golang官方的net/rpc库使用encoding/gob进行编解码&#xff0c;支持tcp和http数据传输方式&#xff0c;由于其他语言不支持gob编解码方式&#xff0c;所以gol…

JAVA:深入理解原型模式构建可复用对象的关键技术

1、简述 在软件开发中&#xff0c;有时候我们需要创建许多相似但不完全相同的对象&#xff0c;这时候使用原型模式就显得非常有用。原型模式是一种创建型设计模式&#xff0c;它允许我们通过复制现有对象来创建新对象&#xff0c;而无需从头开始构建。本文将深入探讨 Java 中的…

银河麒麟桌面版操作系统修改主机名

1图形化方式修改 1.1在计算机图标上右键&#xff0c;选择属性 1.2修改 1.2.1点击修改计算机名 选择玩属性后会自动跳转到关于中&#xff0c;在计算机名中点击修改图标本质就是设置里面的系统下的关于&#xff0c;我们右键计算机选择属性就直接跳转过来了 1.2.2修改系统名字 …

day05-进程通信

1> 将互斥机制的代码实现重新敲一遍 代码&#xff1a; #include<myhead.h>int num520;//临界资源//1.创建互斥锁 pthread_mutex_t fastmutex;//定义任务函数 void *task1(void *arg){printf("1111111\n");//3.临界区上面获取锁资源&#xff08;上锁&#…

【嵌入式学习】QT-Day2-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2>登录界面优化 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff…

并发编程之深入理解Java线程

并发编程之深入理解Java线程 线程基础知识 线程和进程 进程 程序由指令和数据组成、但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须要将指令加载至CPU、数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的…

项目解决方案:校园云视频平台方案(视频接入、汇聚、联网、分享)

目 录 一、项目需求 二、系统设计方案 三、平台功能 四、案例展示 本方案分四个部分&#xff1a;项目需求、系统设计方案、平台基础功能、案例展示&#xff0c;如下&#xff1a; 一、项目需求 二、系统设计方案 通过AS-V1000视频资源综合管理平台实现监控视频的接入、…

成年人学英语其实有个捷径,但你们都不信

上班了…… 我不想上班&#xff0c;只想躺平&#xff0c;同时银行卡上的余额还能够不断的增加。 当然现阶段肯定是不行的&#xff0c;我仍要靠打工养活自己&#xff0c;而且先要获得第一桶金。 第一桶金在何方&#xff1f;我还不知道&#xff0c;人在迷茫时&#xff0c;就来学英…

docker:Haoop集群

系列文章目录 docker&#xff1a;环境安装 docker:Web迁移 docker:Haoop集群 文章目录 系列文章目录前言一、宿主机选择二、环境准备1.前置技术2.网络环境1. docker网卡2. 分配IP 三、容器互联三、Jdk和Hadoop安装四、分发脚本五、启动Hadoop总结 前言 年前学习了docker的相关…

新疆营盘古城及古墓群安防舱体实施方案

3 总体布局 3.1设计原则 3.1.1执行有效的国家标准、国家军用标准和行业标准&#xff1b; 3.1.2满足指标要求&#xff1b; 3.1.3采用通用化、模块化设计&#xff0c;提高设备可维修性&#xff1b; 3.1.4采用人机工程学知识进行设计&#xff0c;充分考虑安全性。 3.2 总体…

Sora的第一波受害者出现了。

不知道大家最近除了被Sora刷屏之外&#xff0c;有没有被这张图刷屏 我只能说网友太强大了 说实话&#xff0c;我进入舟老师的直播间&#xff0c;每次都是还有3分钟下播&#xff0c;还有6单就拍完 但是10分钟后还在激情逼单&#xff0c;6单之后还有6单 也许在营销学上&#x…

亚马逊工程师严选,超 40 篇 LLM 论文汇总

2023 年&#xff0c;大语言模型依旧是「话题制造机」&#xff0c;不管是 OpenAI 的「宫斗剧」&#xff0c;还是各个大厂的新模型、新产品「神仙打架」&#xff0c;亦或是行业大模型发展的风生水起&#xff0c;都昭示着大语言模型具备巨大的发展空间。花香自引蝶&#xff0c;其实…

LeetCode 算法题 (数组)存在连续3个奇数的数组

问题&#xff1a; 输入一个数组&#xff0c;并输入长度&#xff0c;判断数组中是否存在连续3个元素都是奇数的情况&#xff0c;如果存在返回存在连续3个元素都是奇数的情况&#xff0c;不存在返回不存在连续3个元素都是奇数的情况 例一&#xff1a; 输入&#xff1a;a[1,2,3…

探索Django路由规则(路由匹配、路由命名空间、HTML中的跳转与Django集成、路由传参以及后端重定向)

路由管理&#xff1a; ​ 在实际开发过程中&#xff0c;⼀个Django 项⽬会包含很多的 app &#xff0c;这时候如果我们只在主路由⾥进⾏配置就会显得杂乱⽆章&#xff0c;所以通常会在每个 app ⾥&#xff0c;创建各⾃的 urls.py 路由模块&#xff0c;然后从根路由出发&#x…

leetcode日记(32)字符串相乘

做了很久很久……真的太繁琐了&#xff01;&#xff01; class Solution { public:string multiply(string num1, string num2) {string s;string str;if (num1 "0" || num2 "0") return "0";for(int inum2.size()-1;i>0;i--){int c2num2[…