C之fopen/fclose/fread/fwrite/flseek

一、C中文件操作简介

        c中的文件操作大致和linux的文件操作类似,但是毕竟是不同的API,所以会有些差异。部分差异会在下面的案例中体验

二、fopen

        open的参数有两个一个是文件名,一个是模式选择,不同open函数,open中的模式是一个枚举mode_t, 这里的mode类型是一个字符中。

#include <stdio.h>FILE *fopen(const char *pathname, const char *mode);

open参数描述

pathname文件路径
mode模式,设置权限

mode

r以只读方式打开文件
r+以读写方式打开文件
w清空文件或创建文件
w+以读写方式打开文件,文件不存在会创建,如果存在会被截断
a以追加形式打开文件,文件不存在会创建,只能将内容添加到尾部
a+以读写方式打开文件,并在文件后面追加,文件不存在会创建

 返回值

        指向文件流的FILE *指针类型,失败返回NULL

 fopen 和open flag 转换表

三、close

close 比较简单,参数只一个打开的文件的描述符。成功返回0,失败返回EOF。

#include <stdio.h>int fclose(FILE *stream);

四、read

read函数尝试从stream 中 读取nmemb条数据,每条数据的大小为size,并把读取的数据放在ptr指针中。所以读取的数据大小 为 nmemb * size。

如果读取成功返回nmemb; 

如果nmemb * size 超过文件的大小,返回的nmemb大小等于刚超过文件大小的值。比如文件中只有12345,size设置成3,nmemb如果设置成2,则返回2,如果设置超过2,也只能返回2。

nmemb: 可以理解为number of member block, 内存块的数量

#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

五、write

write函数尝试向stream 中写入nmemb条数据,每条数据的大小为size,写入的数据放在ptr指针中。所以写入的数据大小为 nmemb * size。

如果写入成功返回nmemb;

如果nmemb * size 超过ptr缓冲区大小也能写入成功,也会返回nmemb。

#include <stdio.h>size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

六、lseek

重定位光标的位置。根据设置whence 来进行offset偏移,offset为负代码左偏移,为正代表右偏移。

成功返回0,失败返回-1; 通过调用ftell来获取当前光标的位置。而不是像lseek直接返回光标的位置。

#include <sys/types.h>
#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);

常用 whence

SEEK_SET定位到文件起始位置
SEEK_CUR定位到当前位置
SEEK_END定位到文件结束位置

七、自定cp命令

argc: 代表参数数量 argument count 

argv :代表argument vector ,是一个指针数组(数组元素类型是char *),或者说是一个二级指针(char **argv)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main(int argc, char *argv[]) {FILE *src, *des;char *readBuf = NULL;if(argc != 3) {printf("paramer error\n");exit(-1);}src = fopen(argv[1], "r");fseek(src, 0, SEEK_END);int size = ftell(src);fseek(src, 0, SEEK_SET);printf("size = %d", size);readBuf = (char *)malloc(sizeof(char) * size + 1);int readCount = fread(readBuf, size, 1, src);des = fopen(argv[2],  "w+");fwrite(readBuf, strlen(readBuf), 1, des);fclose(src);fclose(des);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter 分布式压测,你的系统能否承受高负载?

‍你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子&#xff0c;它模拟了同时有 5000 个用户&#xff0c;循环 10 次的情况‍。 请求默认配置 token 配置 秒杀接口 ​结果分析 ​但是&#xff0c;实际企业中&#xff0c;这种压测方式根本不满足实际需求。下…

HSRP热备份路由器协议的解析和配置

HSRP的解析 个人简介 HSRP hot standby router protocol 热备份路由协议&#xff08;思科私有协议&#xff09; HSRP v1 version 1 HSRP v2 version 2 虚拟一个HSRP虚拟IP地址 192.168.1.1 开启HSRP的抢占功能 通过其他参数 人为调整谁是主 谁是从 &#xff01; 查…

firefox的主题文件位置在哪?记录以防遗忘

这篇文章写点轻松的 最近找到了一个自己喜欢的firefox主题,很想把主题的背景图片找到,所以找了下主题文件所在位置 我的firefox版本:版本: 118.0.1 (64 位)主题名称: Sora Kawai 我的位置在 C:\Users\mizuhokaga\AppData\Roaming\Mozilla\Firefox\Profiles\w0e4e24v.default…

写爬虫?前端er何必用python

前言 说起网络爬虫,很多人第一时间想到python,但爬虫并非只能用python实现,虽然网上大部分爬虫文章都在说python爬虫,但对于前端程序员来说,我觉得js才是最屌的(对于简单爬取任务来说,复杂的我暂时没碰到~),下面说说我的经验(是的,仅限本人经验),希望能给各位前…

Linux系统管理:虚拟机Centos Stream 9安装

目录 一、理论 1.Centos Stream 9 二、实验 1.虚拟机Centos Stream 9安装准备阶段 2.安装Centos Stream 9 3.进入系统 一、理论 1.Centos Stream 9 (1) 简介 CentOS Stream 是一种 Linux 操作系统。安装此操作系统的难题在于&#xff0c;在安装此系统之前&#xff0c…

光伏发电预测(GRU模型,Python代码)

运行效果&#xff1a;光伏发电预测&#xff08;GRU模型&#xff0c;Python代码&#xff09;_哔哩哔哩_bilibili 所有库的版本&#xff1a; 1.数据集&#xff08;连续10年不间断采集三个光伏电站的发电量及天气情况&#xff0c;每隔半个小时采集一次信息&#xff0c;因此&…

MPP 架构在 OLAP 数据库的运用

MPP 架构&#xff1a; MPP 架构的产品&#xff1a; Impala ClickHouse Druid Doris 很多 OLAP 引擎都采用了 MPP 架构 批处理系统 - 使用场景分钟级、小时级以上的任务&#xff0c;目前很多大型互联网公司都大规模运行这样的系统&#xff0c;稳定可靠&#xff0c;低成本。…

污水管网水位监测,管网水位监测仪守护城市污水管网运行

万宾科技&#xff1a;污水管网水位监测 近年来&#xff0c;城市化进程的加速使得污水管网建设愈发重要。然而&#xff0c;在管网运维中&#xff0c;水位监测一直以来都是一个令人头痛的难题。为了解决这一问题&#xff0c;万宾科技公司推出了管网水位监测仪EN200-D2&#xff0…

基于 ACK Fluid 的混合云优化数据访问(三):加速第三方存储的读访问,降本增效并行

作者&#xff1a;车漾 前文回顾&#xff1a; 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景&#xff0c;相关文章请参考&#xff1a; 基于 ACK Fluid 的混合云优化数据访问&#xff08;一&#xff09;&#xff1a;场景与架构 基于 ACK Fluid 的混合云优化…

Java-Atomic原子操作类详解及源码分析,Java原子操作类进阶,LongAdder源码分析

文章目录 一、Java原子操作类概述1、什么是原子操作类2、为什么要用原子操作类3、CAS入门 二、基本类型原子类1、概述2、代码实例 三、数组类型原子类1、概述2、代码实例 四、引用类型原子类1、概述2、AtomicReference3、ABA问题与AtomicStampedReference4、一次性修改&#xf…

功率半导体器件静态参数测试都测哪些内容?

功率半导体器件如今已成为不可或缺的元件&#xff0c;在通信、电力电子等领域得到广泛应用。而对其性能参数的测试也是必不可少的&#xff0c;是对半导体性能、质量的保障。半导体测试参数包含静态测试参数和动态测试参数&#xff0c;本文将介绍半导体分立器件静态测试参数的相…

【网络安全 ---- 靶场搭建】凡诺企业网站管理系统靶场详细搭建过程(asp网站,练习Access数据库的 sql注入)

一&#xff0c;资源下载 百度网盘资源下载链接&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com…

Android Studio Flutter真机调试错误

错误&#xff1a;Could not locate aapt. Please ensure you have the Android buildtools installed. No application found for TargetPlatform.android_arm64. Is your project missing an android/app/src/main/AndroidManifest.xml? Consider running "flutter crea…

京东运营数据分析:2023年8月京东饮料行业品牌销售排行榜

鲸参谋监测的京东平台8月份饮料市场销售数据已出炉&#xff01; 8月份&#xff0c;饮料市场整体销售下滑。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年8月&#xff0c;京东平台饮料市场的总销量将近820万&#xff0c;环比下滑约8%&#xff0c;同比下滑约20%&am…

Docker与Serverless计算的集成: Docker容器如何与Serverless计算结合。

文章目录 1. Docker容器的可移植性2. Serverless计算的自动伸缩性3. 使用Serverless与Docker容器a. 自托管Serverless平台b. 使用容器服务 4. 使用案例&#xff1a;图像处理服务5. 结论 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;…

flex布局在多层嵌套时,内层设置了justify-content: space-between;不生效问题

内层的地址和时间这一行&#xff0c;设置了justify-content: space-between;但并不生效&#xff0c;原因是要在上一层.center 设置 flex:1;&#xff08; 重点&#xff09; 经常忘记&#xff0c;特在此记录一下&#xff0c;以下是代码 <view class"index-card" c…

3D 人体研究

SynBody: Synthetic Dataset with Layered Human Models for 3D Human Perception and Modeling SynBody 是一个新的合成数据集&#xff0c;旨在推动 3D 人体研究的多样性和标注质量。它具有以下三个吸引人的特点&#xff1a; 服装参数化人体模型&#xff1a;可以生成各种不同…

数学建模、统计建模、计量建模整体框架的理解以及建模的步骤

数学建模、统计建模、计量建模整体框架的理解以及建模的步骤 引言正文模型的设定模型的估计建模中可能遇到的四种数据类型 模型的检验模型的应用 最后 引言 这篇博客主要写给统计或者数学专业的小白&#xff0c;以供快速上手建模比赛&#xff1b;本人将在这里整合参加建模比赛…

c语言:通讯录管理系统(文件版本)

前言&#xff1a;在大多数高校内&#xff0c;都是通过设计一个通讯录管理系统来作为c语言课程设计&#xff0c;通过一个具体的系统设计将我们学习过的结构体和函数等知识糅合起来&#xff0c;可以很好的锻炼学生的编程思维&#xff0c;本文旨在为通讯录管理系统的设计提供思路和…

SpringBoot配置输出的日志文件

SpringBoot配置输出的日志文件 1、无需导入依赖&#xff0c;因为我们创建springboot时&#xff0c;导入的关于springboot的依赖中已经包含了。 2、我们在项目的resources 资源文件下创建logback.xml文件&#xff0c;文件内容如下 作用&#xff1a; 如果是开发时启动的项目&a…