当前位置: 首页 > news >正文

C语言第20天笔记

文件操作

概述

什么是 文件

文件时保存在外存储器上(一般代指磁盘,也可以是U盘、移动硬盘等)的数据的集合。

文件操作体现在哪几个方面

1. 文件内容的读取

2. 文件内容的写入

数据的读取和写入可被视为针对文件进行输入和输出的操作,此时数据就像水流一样从外存 储器流向内存,或者从内存流向外存储器,所以系统形象的称文件操作为文件流。

C语言程序对文件的操作采用“文件缓冲机制”。就是说在程序中对文件的数据读写并不是直接 操作文件中的数据,而是系统会为文件在内存中创建“文件缓冲区”,程序对文件的操作,其实是在 缓冲区进行的。

文件的分类

根据数据的存储方式划分:

1. 文本文件(ASCII文件)

2. 二进制文件

文件标识

1. 文件系统中:路径+文件名,举例: d:/aaa/bbb.txt

2. C语言程序中:文件指针(文件类型指针),语法: FILE *指针变量名

文件操作的步骤:

1. 打开文件

2. 文件处理(读写文件)

3. 关闭文件 文件的操作 打开文件,让系统为文件创建文件缓冲区;

函数名:fopen

头文件: #include

函数原型: FILE* fopen(const char *path,const char *mode);

函数功能:打开文件,并为文件创建缓冲区

函数参数: path:目标文件的路径

mode:文件打开的方式(读-r、写-w、读写-rw)

返回值:

成功:返回文件指针 File* (缓冲区首地址)

失败:返回NULL 文件关闭,文件使用完毕,一定要记得释放

函数名:fclose

头文件: #include

函数原型: int fclose(FILE* fp);

函数功能:关闭文件,释放缓冲区

函数参数: fp:已经打开的文件指针

返回值:

成功:返回0

失败:返回EOF(-1)

文件打开与关闭案例

/**
* 文件的打开与关闭
*/
#include <stdio.h>
int main(int argc,char** argv)
{
// 在命令行执行./a.out的时候,传递一个需要打开的目标文件的地址
if(argc < 2)
{
printf("输入有误,请按照<%s 文件路径>格式输入\n",argv[0]);
return -1;
}
// 根据提供的文件路径,打开文件,mode(r,w,rw)
FILE* fp = fopen(argv[1],"r");
// 校验文件是否读取成功
if(!fp)
{
perror("文件打开失败!");
return -1;
}
puts("文件打开成功!");
// 关闭打开的文件
int ret = fclose(fp);
// 校验文件是否关闭成功(很多时候这一步会省略掉)
if(ret == -1)
{
perror("文件关闭失败!");
return -1;
}
puts("文件关闭成功!");
return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在Java程序中执行Linux命令
  • 对AI大模型的擅长能力的了解
  • 工作 sql 数据库创建 表的修改 插入数据
  • 数据库系统 第17节 数据仓库
  • 分享|华为测试OD岗面试流程
  • 高效记录与笔记整理的策略:工具选择、结构设计与复习方法
  • CentOS 上安装 Java 17
  • 【Bifrost】ubuntu24.04 远程构建及clion设置编码风格google
  • docker入门教程
  • kettle的Javascript组件获取T-1天和T+1天
  • 【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例
  • 【已成功EI检索】第三届机电一体化技术与航空航天工程国际学术会议(ICMTAE 2023)
  • 计算机视觉中的上采样与下采样:深入浅出实例代码解析
  • 具身智能成败之关键!干货长文首次全面回顾具身智能领域中的视觉-语言-动作模型!
  • 聊聊国产数据库的生态系统建设
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 2019.2.20 c++ 知识梳理
  • 30天自制操作系统-2
  • Android优雅地处理按钮重复点击
  • JavaScript函数式编程(一)
  • JavaWeb(学习笔记二)
  • SQL 难点解决:记录的引用
  • vagrant 添加本地 box 安装 laravel homestead
  • vue-cli在webpack的配置文件探究
  • 翻译:Hystrix - How To Use
  • 汉诺塔算法
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • $(function(){})与(function($){....})(jQuery)的区别
  • ()、[]、{}、(())、[[]]命令替换
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (4)Elastix图像配准:3D图像
  • (pojstep1.1.2)2654(直叙式模拟)
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (Qt) 默认QtWidget应用包含什么?
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)hibernate配置管理
  • (二)JAVA使用POI操作excel
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (接口自动化)Python3操作MySQL数据库
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三)c52学习之旅-点亮LED灯
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (转)scrum常见工具列表
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • 、写入Shellcode到注册表上线
  • .Net Core 生成管理员权限的应用程序
  • .NET Core中的时区转换问题
  • .net 设置默认首页
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .Net(C#)常用转换byte转uint32、byte转float等