尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux系统编程——标准io
c库中 关于文件操作的一套函数 称为标准io。I输入 O输出Linux操作系统当中IO都是对文件的操作。输入输出是以计算机中的内存为参考点。如果写入内存的被称为输入 键盘和鼠标是标准输入设备。如果从内存中输出数据被称为输出显示器是标准输出设备。一、关于Linux系统函数不需要记忆使用时会通过手册查询就行man 1 xxx /man xxx 查看当前xxx命令man 2 xxx 查看xxx对应的系统调用(linux系统 )函数 man 3 statman 3 xxx 查看xxx对应的标准库(C 库)函数命令的查询用man 1函数的查询不用刻意记忆不是man 2就是man 3。二、文件操作的步骤对于任意一个文件的操作都遵从以下三个步骤1.打开文件。FILE *fopen(const char *pathname, const char *mode);功能打开一个文件并返回文件流指针linux 通过内部描述一个文件的结构体通过这个结构体来管理计算机上所有的文件)。参数pathname要打开的文件的路径mode对这个文件的操作模式r 只读 文件不存在报错 文件存在则只读打开r 读写 文件不存在报错 文件存在则读写打开w 只写 文件不存在则创建文件存在则清0只写打开w 写读 文件不存在则创建文件存在则清0写读打开a 追加可写 文件不存在则创建 文件存在则追加只写打开返回值成功建立的文件流指针失败NULL2.读写操作①读写单个 字符fputc/fgetcint fputc(int c, FILE *stream);功能: 向流中写入一个字符参数:c:要写入的字符stream:文件流指针返回值:成功写入的字符ASCII码值失败EOFfgetc int fgetc(FILE *stream);功能: 从流中读取一个字符参数:stream:文件流指针返回值:成功返回读到字符的ASCII码值 读到文件末尾返回EOF②读写字符串 fputs/fgetsint fputs(const char *s, FILE *stream);功能从s所在的本地内存中获取一行数据并写入stream对应的文件 流对象。参数s 要写的信息一般是固定的字符串或者有数据的数组。stream 要写入的目标文件流对象返回值成功非负失败 -1char *fgets(char *s, int size, FILE *stream);功能从stream流对象关联的文件中获取size大小字节的文本数据 并存储到s对应的本地内存(栈区数组堆区内存)参数s 要存储数据的本地内存 size 要获取的数据长度单位字节。stream 要获取的目标文件流对象 可以是stdin 程序会阻塞等待 如果是普通文件fp 则指向文件第一行数据返回值成功指向有效数据的首地址一般等于s的地址失败 或者 文件末尾 NULL③读写二进制文件或文本文件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读到结尾 也是0size_t fwrite(const void *ptr, size_t size,size_t nmemb, FILE *stream);功能从ptr所在本地内存中取出nmemb个大小为size的数据块写入到stream流对应的文件流对象中。参数ptr 要写的数据块地址一般是数组或者结构体指针size 要写的数据块元数据大小单位是字节nmemb 要写的数据块的个数stream 要写的目标文件流对象。如果是stdout表示数据会写到终端屏幕显示如果是fp的普通文件则会写入到文件中。返回值成功 小于等于nmemb 的个数。失败 03.关闭文件。对文件不需要读写操作了就可以关闭对相关资源释放。int fclose(FILE *stream);功能关闭stream流对象关联的文件。参数stream 要关闭的目标文件流对象。返回值成功0失败 EOF三、其他函数1.文件定位int fseek(FILE *stream, long offset, int whence);功能将stream流文件中的文件指针从whence位置开始偏移offset字节的长度。参数stream 要移动文件指针的目标文件流对象。offset 要在文件内偏移的距离单位字节。如果值为整数则向文件末尾偏移如果值为负数则向文件开头偏移whence 偏移的起始位置,由系统定义的三个宏开始。SEEK_SET 文件的开头位置SEEK_CUR 文件的当前位置SEEK_END 文件的末尾位置返回值成功 返回 0失败 -12.计算文件大小long ftell(FILE *stream);rewind(fp);功能获取当前文件流指针的具体位置一般以文件开头到当前指针的字节数为返回值。参数stream 要返回指针距离的文件流对象返回值成功 获取到的距离长度单位是字节失败 -1搭配fseek使用eg:fseek(fp,0,seek_end);//先定位到最后long size ftell(fp);//再看从文件开头到定位处返回的字节数就是文件大小。3.文件流指针复位void rewind(FILE *stream);功能把文件读写的位置复位到开始的地方。参数需要被操作的文件流指针返回值空*特别是用了fseek和ftell函数搭配求出文件大小后想再对文件进行操作但是文件流指针此时的位置在文件末尾此时进行读写操作结果就是错误的我们在计算完文件大小后应该及时让文件流指针复位这是在实际操作时容易遗漏的问题。
RELATED

相关推荐

从零开始学 UI 第一篇:Figma 快速上手实战指南(上)

从零开始学 UI 第一篇:Figma 快速上手实战指南(上)

🔹博主名称:_Doubletful大家好,欢迎来到Doubletful的博客🪢博主的GitHub:Go to git_hub💠移动应用开发专栏🔷路漫漫其修远兮,吾将上下而求索文章目录序言什么是 UI 设计?…

📅 2026/10/24 2:20:47
基于 Scapy 的端口扫描器实验:TCP Connect、SYN、Xmas、FIN、NULL 与 UDP 扫描

基于 Scapy 的端口扫描器实验:TCP Connect、SYN、Xmas、FIN、NULL 与 UDP 扫描

一、实验目的 掌握端口状态探测的基本原理;熟悉使用 Scapy 构造和分析网络数据包;理解不同端口扫描技术的工作原理、特点与局限;对比自研扫描器与 Nmap 的扫描结果。 二、实验环境与拓扑 扫描主机(Attacker)&#xff1…

📅 2026/10/24 2:15:47
瑞芯微RK平台视频硬解排障指南-下|板端实测记录

瑞芯微RK平台视频硬解排障指南-下|板端实测记录

媒体(视频编解码)排障分三层:底层是MPP(VPU硬解硬编库),中层是GStreamer(管道/插件),上层是零拷贝(dmabuf)这种性能优化手段。本文按这三层把&quo…

📅 2026/10/24 2:15:47
MORE NEWS

更多资讯

📰

房贷还款计算全解析:等额本息与等额本金对比及Python实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

10分钟用Vue3+Express搭建生鲜电商实战项目

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Frash:iOS Web应用容器如何实现原生级体验优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

RGMII时序三要素:delay、skew与setup的工程落地解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

机械革命控制台主动式热管理:PWM直控与动态分区PID实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

基于PCA降维与BP神经网络的交通流量预测MATLAB项目实例

交通流量预测这几年在智能交通、城市大脑、信号灯优化这些场景里特别火,但实际做起来有个很现实的问题:采集到的特征维度实在太多了。不同车道的车流量、平均车速、时间占有率、天气、时段、上下游拥堵指数,十几个甚至几十个特征堆在一起&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬