Linux-文件基本操作
1.基本概念
文件:
一组相关数据的集合
文件名:
01.sh //文件名
2.linux下的文件类型
b block 块设备文件 eg: 硬盘
c character 字符设备文件 eg: 鼠标,键盘
d directory 目录文件 eg: 文件夹
- regular 常规文件 eg: 1.txt 01.sh xx.bmp
l symblink 软链接 eg: 快捷方式
s socket 套接字 eg: 网络通信用
p pipe 管道 eg: 进程间通信
3.思想
linux中一个核心思想
everything is file!
4.文件的基本操作
【1】用户方面
打开(新建)
输入(写数据)
阅读(读取)
删除
插入
修改
关闭 (保存)
【2】研发方面
1.打开
2.写
3.读
4.关闭
5. linux操作文件的函数
两套函数 (两套操作路径)
(1) 系统调用 --- 内核提供的函数
(2) 库函数 --- 第三方提供的函数
(1).库函数
c library // c库函数
集成了很多功能函数
//标准输入输出
//数学函数
//...
-lm
#include <math.h>
标准输入输出 --- stdio 文件操作
标准io; stdio.h
1.标准io的概念
1975 Dennis r IO库,
从C语言的标准,ANSI c
IO input output
I: 键盘是标准输入设备 ====》默认输入就是指键盘 /dev/input
O: 显示器是标准输出设备 ==》默认输出就是指显示器
Linux操作系统当中IO都是对文件的操作
C一部分,任何支持标准C的系统都可使用标准IO实现文件存储
标准IO在UNIX上是对文件IO的封装
一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,
加入缓冲区,可以有效减少系统调用的次数,节省系统IO调度资源
说明:
标准IO库,不单单是linux上有,在windows,Mac os上都有。
很多操作系统都实现了标准IO库。
都是依据IOS C标准实现的。
所以基本保证了可移植性。
但是因为标准和具体实现之间的差异,
未必敢保证所有的函数在都可以相互通用。
标准IO都干了些啥?
标准IO处理了很多细节:
(1).处理缓冲区分配 (缓存--提高效率 --- 慢速 快速)
(2).读写IO的块长度的优化
(3).对系统调用进行了封装,内部对应的"文件描述符"
好处:
用户使用方便,不必再担心如何选择正确的块长度。
//地位:
标准I/O库是由 Dennis Ritchie在1975年左右编写的。
它是Mike Lesk编写的可移植I/O库的主要修改版本。
令人惊讶的是,50年来,几乎没有对标准I/O库进行修改。

6. 函数接口
1.打开 -- fopen //file open
2.写/读
//按字符读写
fgetc/fputc
//按行读写
fgets/fputs
//按对象读写
fread/fwrite
3.关闭
fclose --- file close
fopen
man手册的内容
Name 名字+简短说明
SYNOPSIS 头文件 + 函数原型
DESCRIPTION 函数的一些实用细节说明
RETURN VALUE 返回值
FILE * fopen(const char *pathname,const char *mode);
功能:
流打开函数
参数:
@pathname --- 要打开的文件名 //字符串形式的名字
@mode --- 打开的模式
r --- 只读
r+ --- 读写
说明: 带r的 要求,文件必须存在 ,如果不存在,就会报错
w --- 只写
w+ --- 读写
说明:
文件存在 ,截断成 0长度
不存在,则创建
a --- 追加(写)
a+ --- 读写
说明:
读 从头读
写 从末尾开始写
文件存在 则打开做写操作即可
文件不存在 创建文件
返回值:
成功 FILE*指针 //文件指针 流指针 --- 从程序上讲,FILE *指针就代表打开的这个文件
失败 NULL 同时 errno会被设置
void perror(const char *s);
功能:
打印错误信息
参数:
s //用户自定义字符串



7.fgetc
int fgetc(FILE * stream);
功能:
从文件中读取字符
参数:
@stream 表示要读取的文件对应的流指针
返回值:
成功 对应字符的ASCII码值
失败 EOF 到达文件结尾
出错
问题:
EOF
文件中有没有 EOF? //只是到达结尾时的一个标志
8.fputc
int fputc(int c,FILE *stream);
功能:
将一个字符输出到指定的流(文件)
参数:
@c //要输出的字符 ---ascii码值
@stream //指定的文件
返回值:
成功 被写入的字符的ASCII码值
失败 EOF
系统默认打开的流指针:
stdin //标准输入
stdout //标准输出
stderr //标准出错 --- 屏幕 --- 可以专门把错误信息输出到 stderr

9.fclose
int fclose(FILE *stream);
功能:
关闭文件
刷新流
关闭了底层文件描述符
返回值:
成功 0
失败 EOF
注意,不要多次重复关闭

练习:
cp src.txt dest.txt
//1.打开文件
src.txt //读
dest.txt //写
//2.读写
从 src中读数据
写到 dest中
//3.关闭
fclose

10.fgets
char * fgets(char*s,int size,FILE*stream)
功能:
从stream中读取size-1个字符,到s指向的空间
参数:
@s //存放读取到的数据 对应的内存空间
@size //指定一次最多读取多少个字符
@stream //表示要读取的文件
返回值:
成功 返回s
失败 NULL
读到文件结尾 也 返回NULL
注意:
fgets读取结束:
1. EOF
2. '\n'
3. size-1
11.fputs
int fputs(const char *s, FILE *stream);
功能:
输出s到stream中
参数:
@s 代表要输出的字符串
@stream 代表 输出到的文件
返回值:
成功 非负数
失败 EOF
注意:
不会将 '\0' 输出
练习:
cat //fgets实现cat

练习:
统计文件行数

练习:
从键盘输入数据,
把数据保存到一个文件中

练习:
cp
3
12.fputs(buf,);
"123" --- 文本文件 --- '1''2''3' //每个数据是按照固定的编码格式存放的 -ASCII
123 --- 二进制 --- 01111011 //
linux下操作时 ,没有区别
windows下区别
说明:
1.fgets 和 fputs 在拷贝 二进制文件时 可能出问题
相关文章:
Linux-文件基本操作
1.基本概念 文件: 一组相关数据的集合 文件名: 01.sh //文件名 2.linux下的文件类型 b block 块设备文件 eg: 硬盘 c character 字符设备文件 eg: 鼠标,键盘 d directory 目录文件 eg: 文件夹 - regular 常规文件…...
自己部署 DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 自己…...
初窥强大,AI识别技术实现图像转文字(OCR技术)
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据、人工智能领域创作者。目前从事python全栈、爬虫和人工智能等相关工作,主要擅长领域有:python…...
【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?
目录 一、整体规划 1. 了解基本概念与背景 2. 学习资料的选择 3. 学习路径与规划 4. 学习建议 5. 注意事项 6. 参考学习资料 二、详细计划 阶段 1:了解基础(1-2 周) 阶段 2:深入掌握核心功能(3-4 周…...
Elasticvue使用总结
用了好多es的可视化客户端,但平时用的最多的是Elasticvue这个浏览器插件。总结一下使用教程。 连接 首页大盘 说明: 节点情况:一共三个节点,三个节点既是master节点又是data节点。(一个节点可以既是master又是data&a…...
尚硅谷爬虫note002
一、for循环 语法: for 变量 in 要遍历的数据 方法体 【for i in 要遍历的数据】:字符串中 i 表示变量 1. 循环字符串 2. range(5)方法 :0~4 for i in range(5) 3. range(1&…...
小白零基础如何搭建CNN
1.面向对象编程 1.1类(Class)和对象(Object) class Animal:"""定义一个动物类Animal,包含基本属性和行为。"""def __init__(self, name, species, age0):"""__init__…...
在vivado中对数据进行延时,时序对齐问题上的理清
在verilog的ISP处理流程中,在完成第一个模块的过程中,我经常感到困惑,到底是延时了多少个时钟?今日对这几个进行分类理解。 目录 1.输入信号激励源描述 1.1将数据延时[9]个clk 1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据…...
《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?要怎么解决?
《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?要怎么解决? 宝子们,是不是在玩《只狼》的时候,突然弹出一个提示:“找不到mfc140u.dll文件”?这可真是让人着急上火!别慌,今…...
vue学习笔记7
打包发布 目标:明确打包的作用 说明:vue脚手架只是开发过程中,协助开发的工具,当真正开发完了 > 脚手架不参与上线 打包的作用: 将多个文件压缩合并成一个文件,语法降级,less sass ts 语法…...
Unity 增量打包AssetBundle
背景 打包太慢了,想要没改动的资源不重新打包浪费时间。 来源 官方文章:https://forum.unity.com/threads/about-incremental-build-and-asset-bundle-hashes.1436032/ 官网AB介绍:https://learn.unity.com/tutorial/assets-resources-and…...
嵌入式八股文面试题(二)C语言算法
相关概念请查看文章:C语言概念。 1. 如何实现一个简单的内存池? 简单实现: #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…...
尚硅谷爬虫note005
一、编解码 1.get请求的quote方法 将汉字转为Unicode字符 # _*_ coding : utf-8 _*_ # Time : 2025/2/12 16:33 # Author : 20250206-里奥 # File : demo19_get请求的quote方法 # Project : PythonProject10-14# 景甜page # https://www.baidu.com/s?ieutf-8&f8&rsv…...
xml 和json互转工具
工具1 有个问题会导致springboot返回捕获的异常编程xml格式 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.json.JSONObject; import org.json.XML; import org.w3c.dom.Document;import javax.xm…...
ElementUI 抽屉组件高度封装
在前端开发中,ElementUI 的el-drawer组件虽实用,但为满足复杂业务需求,如统一样式、特定交互和灵活使用,常需二次封装。下面将带你实现一个高度封装的 ElementUI 抽屉组件。 创建基础封装组件 创建MyDrawer.vue,引入e…...
深入解析:如何在C#和C/C++之间安全高效地通过P/Invoke传递多维数组
在工业控制、机器人编程和物联网等领域,我们经常需要让C#这样的托管语言与C/C编写的底层库进行交互。在这个过程中,遇到需要传递多维数组的场景时,许多开发者会意外遭遇System.Runtime.InteropServices.MarshalDirectiveException异常。本文将…...
轻量级在线ETL数据集成工具架构设计与技术实现深度剖析
在当今数字化时代,企业面临着海量异构数据的整合挑战。ETL(Extract, Transform, Load)工具作为数据集成的核心,负责将分散在不同数据源中的数据进行抽取、转换和加载,以构建统一的数据视图。本文将深入剖析一款基于诺依框架开发的在线ETL数据集成工具,重点阐述其架构设计…...
二、k8s项目的生命周期
项目的生命周期 创建-----------》发布-----------》更新--------》回滚----------》删除 kubectl create deployment nginx1 --imagenginx:1.22 --replicas3 基于deployment控制器创建pod 控制器的名称是nginx1 pod使用的镜像:nginx:1.22 --replicas3 pod的数量有多少 3个…...
GPT 系列模型发展史:从 GPT 到 ChatGPT 的演进与技术细节
从 GPT 到 ChatGPT,OpenAI 用短短几年时间,彻底改变了自然语言处理(NLP)的格局。让我们一起回顾这段激动人心的技术演进史!🚀 🔹 GPT(2018): 划时代的起点&a…...
C#语言的云计算
C#语言在云计算中的应用 引言 随着信息技术的飞速发展,云计算已经成为了现代计算架构的重要组成部分。传统的本地计算方式逐渐被云计算所取代,使得企业与开发者能够更高效地处理数据、部署应用程序以及进行资源管理。在众多编程语言中,C#以…...
Void Memory:为AI智能体构建持久记忆的轻量级解决方案
1. 项目概述:为AI智能体构建持久记忆的“记忆锚”如果你和我一样,长期与Claude Code、Cursor这类AI编程助手并肩作战,一定对那个令人沮丧的瞬间不陌生:你花了半小时向它详细解释了一个复杂项目的架构、你的编码偏好、刚刚踩过的坑…...
MMEE框架:矩阵编码与符号剪枝优化深度学习数据流
1. MMEE框架概述:重新定义注意力融合数据流优化在深度学习硬件加速器领域,数据流优化一直是提升计算效率的核心挑战。传统方法在处理Transformer等模型的注意力融合操作时,往往面临搜索空间爆炸和优化效率低下的问题。MMEE框架的提出…...
reverse-shell工作原理深度解析:智能检测与多语言payload实现
reverse-shell工作原理深度解析:智能检测与多语言payload实现 【免费下载链接】reverse-shell Reverse Shell as a Service 项目地址: https://gitcode.com/gh_mirrors/re/reverse-shell reverse-shell作为一种强大的网络安全工具,其核心功能是让…...
2025注安备考资料全套|视频+讲义+前导课,直接拿来就能学
大家好,最近很多备考注册安全工程师的同学都在找系统、完整的备考资料,要么是课程零散不全,要么是讲义和视频不配套,复习起来特别费劲。为了帮大家省去整理资料的时间,我把自己整理的2024-2025注安全套备考资料分享出来…...
算法复杂度的实验估算与误差分布建模的技术7
引言算法复杂度分析的理论背景与实验估算的必要性误差来源的常见类型(测量误差、系统噪声、模型偏差等)实验方法在算法评估中的实际意义实验设计与数据采集实验环境配置(硬件、软件、数据集选择)关键性能指标定义(时间…...
星期天实训内容
文章目录 1、测试代码照片2、流水灯视频2.1 测试代码2.1 视频 3、独立按键视频(点亮4个灯)3.1 代码3.2 视频 4、独立按键视频(点亮8个灯)5、数码管显示“000000”或者“111111”6、数码管显示“123456”7、数码管显示“11.12.13”…...
基于储能系统参与电网一次调频的下垂控制仿真示例
目录 手把手教你学Simulink——基于储能系统参与电网一次调频的下垂控制仿真示例 一、 引言:当“新能源浪潮”遇见“频率崩塌”——储能如何化身电网的“速效救心丸”? 二、 问题本质:一次调频的“核心挑战”与“协同逻辑” 1. 核心挑战 …...
2026年小程序多少钱对比:精选5大权威推荐帮你选对平台
小程序开发方案的选择直接影响功能匹配度与成本效益,2026年主流服务商主要分为模板化与定制化两类路径。本文将从开发费用构成、五大平台核心方案及选择策略三方面展开分析,帮助您快速定位适合自身业务阶段与预算的选项。内容涵盖基础功能解析、价格对比…...
【图像去噪】基于自适应掩码和稀疏表示的自监督图像去噪研究(含PSNR)附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 dz…...
AI原生开发流程重构:如何用1套标准流程降低76%模型迭代延迟?(基于奇点大会实测数据)
更多请点击: https://intelliparadigm.com 第一章:AI原生开发流程重构:2026奇点智能技术大会方法论发布 在2026奇点智能技术大会上,全球首个面向生产级AI应用的端到端开发范式正式发布——“AI原生开发流程”(AI-Nati…...
