Linux应用软件编程-文件操作(标准io)

在Linux下一切皆文件,比如:.txt,.c,.h,.jpg,目录,键盘,鼠标,显示器、硬盘等等都是文件,即IO。文件操作的统一思想:打开文件,读、写文件,关闭文件。

文件的类型:

b     块设备文件       存储设备(硬盘)

c     字符设备文件    输入输出设备

d     目录文件

-      普通文件    .c   .h   .txt   .jpg   .png   .mp4   a.out    ============>ASCII文件     二进制文件

l      软链接文件       

s     套接字文件      网络通信 

p     管道文件         进程间通信

一  标准IO:

打开文件:fopen

读写文件:

fgetc   fputc:一个字节读写   作用:主要用来操作普通文件(ASCII文件、二进制文件)

fgets   fputs:一行读写          作用:主要用来操作普通文件中的ASCII文件,不能操作二进制文件

fwrite  fread:按照指定大小读写(读写结构体)  作用:主要用来操作普通文件(ASCII文件、二进制文件)

关闭文件:fclose

二  函数接口:

1. FILE *fopen(const char *pathname, const char *mode);

功能:打开一个文件

参数:

pathname : 要打开文件的文件名

mode :打开方式:

"r" :只读方式打开, 文件必须要存在

"r+" :读写方式打开,文件必须要存在

"w":以写的方式打开,文件不存在则创建,文件存在则清空

"w+":以读写方式打开,文件不存在则创建,文件存在则清空

"a":打开追加写,文件不存在则创建

"a+":以读写方式打开,追加写,文件不存在则创建

返回值:成功:文件流指针FILE *;失败: NULL

2. int fclose(FILE *stream);

功能:关闭文件流指针所对应的文件(释放资源)

文件流:FILE-文件流结构体;FILE *-文件流指针;标准IO在每打开一个文件时,都会将一个文件和一个文件流指针相关联。

操作系统默认打开的三个流:

stdin :标准输入流 : 默认关联键盘

stdout:标准输出流:  默认关联显示终端

stderr:标准出错流: 默认关联显示终端

3. int fputc(int c, FILE *stream);

功能:向文件中写入一个字节

参数:

c : 要写入的数据

stream:要写入的文件流指针

返回值:成功:返回写入数据的整型值;失败:EOF(-1)

4. int fgetc(FILE *stream);

功能:从文件中读一个字符

参数:stream : 要读的文件流指针

返回值:成功:返回督导字符的ascii;失败:EOF,读到文件末尾:EOF

5. int fputs(const char *s, FILE *stream);注意:此函数接口不会写入'\0'

功能:向文件中写入一行字符串

参数:

s : 要写入数据的首地址

stream:写入的文件流指针

返回值:成功: >=0;失败 :EOF。

6. char *fgets(char *s, int size, FILE *stream);

功能:读取一行数据到到s指向的空间,遇到'\n'停止读

参数:

s:存储读取到数据的空间首地址

size :期待读到的字节数

stream:要读的文件流

返回值:成功:返回s的首地址;失败:NULL,文件末尾:NULL

fputs和puts,fgets和gets的区别:

fputs与puts:puts会自动输出一个'\n'

fgets与gets:

1. gets会将终端最后输入的'\n'替换成'\0', fgets只是在最终读到的字符串末尾添加'\0';

2. gets是危险的,因为没有限制输入数据的大小,fgets有限制;

3. fgets如果size比要读区的数据小,最多读取size-1个字节,最后一个字节位置存放\0;

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

功能:向文件中写入指定大小的nmemb个元素

参数:

ptr :要写入数据的首地址

size:写入的每个元素的大小

nmemb:要写入的元素的个数

stream:要写入的文件流指针

返回值:成功:实际写入的元素个数;失败:0 

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

功能:从文件中读取nmemb个元素

参数:

ptr:要存放读取到的数据的首地址

size:每个元素的大小

nmemb:期望读到的元素的个数

stream:要度的文件流指针

返回:成功:返回实际读到的元素个数;失败:0,读到达文件末尾:0

标准IO---文件定位函数:

1. int fseek(FILE *stream, long offset, int whence);

功能:重新定位文件流位置

参数:

stream:要重新定位的文件

offset:从指定位置进行偏移的偏移量

whence:指定的位置:SEEK_SET:文件开头,offset:正;SEEK_CUR:当前位置,offset:可正可负;SEEK_END:文件末尾,offset:可正可负

返回值:成功:0;失败:-1

2. long  ftell();
功能:返回流所在位置到文件开头的偏移量

3. rewind();
功能:流复位文件的开头

4.fprintf()

功能:将格式化后的字符串写入到文件

5. int sprintf(char *str, const char *format, ...);

功能:将格式化后的字符串写道str指向的内存空间,字符串的拼接,要将某种基本数据类型转换成字符串类型

6. fscnaf();

功能:从文件中读出格式化后的数据

7. sscanf();
功能:从内存中获取格式化后的数据

时间的函数接口:

time();功能:获取1970-1-1 0:0:0到现在的秒数

ctime();功能:将秒数转换成字符串时间

localtime();功能:将秒数转换成日历时间

char *strtok(char *str, const char *delim);

功能:分割字符串

参数:

str :需要被分割的字符串

delim:分隔符

返回值:成功:返回分割后的字符串首地址;失败:NULL

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

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

相关文章

【Rust自学】4.4. 引用与借用

4.4.0 写在正文之前 这一节的内容其实就相当于C的智能指针移动语义在编译器层面做了一些约束。Rust中引用的写法通过编译器的约束写成了C中最理想、最规范的指针写法。所以学过C的人对这一章肯定会非常熟悉。 喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文…

深入解析 StarRocks 物化视图:全方位的查询改写机制

小编导读: 本文将重点介绍如何利用物化视图进行查询改写。文章将全面介绍物化视图的基本原理、关键特性、应用案例、使用场景、代码细节以及主流大数据产品的物化视图改写能力对比。 物化视图在 StarRocks 中扮演着至关重要的角色,它是进行数据建模和加速…

2. petalinux-build失败

NOTE 解决因为网络原因产生的编译错误分享详细的解决步骤 报错的情况 因为网络原因产生编译错误 现象 找不到适合的包文件(No suitable stageing package found) 不能发现文件(Fetcher failure for URL) 解决方法 采用本地加载本地文件的方式,步骤如下 进入…

sql server msdb数据库备份恢复

备份 BACKUP DATABASE [msdb] TO DISK ND:\liyuanshuai\test\sqlserver_bakfile\msdb20241219.bak WITH NOFORMAT, NOINIT, NAME Nlys-完整 数据库 备份, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS 10 GO然后删除2个测试的job,停止 SQL Server 代理…

web实验二

web实验二 2024.12.19 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>青岛理工大学</title>&l…

bain.js(十二):RNN神经网络实战教程 - 音乐乐谱生成 -人人都是作曲家~

系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;可以在浏览器运行的、默认GPU加速的神经网络库概要介绍&#xff08;二&#xff09;&#xff1a;项目集成方式详解&#xff08;三&#xff09;&#xff1a;手把手教你配置和训练神经网络&#xff08;四&#xff09…

WebSocket入门与结合redis

WebSocket是什么 WebSocket 是一种用于在客户端和服务器之间建立双向通信的协议&#xff0c;它能实现实时、持久的连接。与传统的 HTTP 请求响应模式不同&#xff0c;WebSocket 在建立连接后允许客户端和服务器之间相互发送消息&#xff0c;直到连接关闭。由于 WebSocket 具有…

Hive是什么,Hive介绍

官方网站&#xff1a;Apache Hive Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和查询存储在HDSF上的大规模数据‌。Hive通过将结构化的数据文件映射为数据库表&#xff0c;并提供类SQL的查询功能&#xff0c;使得用户可以使用SQL语句来执行复杂的​MapReduce任…

OpenHarmony和OpenVela的技术创新以及两者对比

两款有名的国内开源操作系统&#xff0c;OpenHarmony&#xff0c;OpenVela都非常的优秀。本文对二者的创新进行一个简要的介绍和对比。 一、OpenHarmony OpenHarmony具有诸多有特点的技术突破和重要贡献&#xff0c;以下是一些主要方面&#xff1a; 架构设计创新 分层架构…

Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景 在实际开发中&#xff0c;我发现团队对于这几个路径的设置上是纯靠猜的&#xff0c;通过一点点地尝试来找到可行的路径&#xff0c;这是不应该的&#xff0c;我们应该很清晰地了解这几个概念&#xff0c;以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…

前端-处理数据的函数

判断数据是否为空,对象是否存在某属性,属性值是否为空,对大数据进行换算,对单位进行转换. 目录 1.格式化数据 2.判断值是否为空(包括对象、数组、字符串、数值类型) &#xff08;1&#xff09;值是0不表示空 &#xff08;2&#xff09;值是0表示空 3. 检查对象是否具有指定名…

基础入门-Web应用蜜罐系统堡垒机运维API内外接口第三方拓展架构部署影响

知识点&#xff1a; 1、基础入门-Web应用-蜜罐系统 2、基础入门-Web应用-堡垒机运维 3、基础入门-Web应用-内外API接口 4、基础入门-Web应用-第三方拓展架构 一、演示案例-Web-拓展应用-蜜罐-钓鱼诱使 蜜罐&#xff1a;https://hfish.net/ 测试系统&#xff1a;Ubuntu 20.04 …

Android运行低版本项目可能遇到的问题

Android运行低版本项目可能遇到的问题 低版本项目总是遇到各种问题的&#xff0c;耐心点 一、gradle-xxx.xxx.xxx.zip一直下载不下来 在gradle-wrapper.properties可以试下 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists zipStoreBaseGRADLE_USER_HOME …

springboot中Controller内文件上传到本地以及阿里云

上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年龄&#xf…

智慧城市工程:相关学点、优势、未来发展

目录 相关学点&#xff1a; 智慧城市的优势 挑战与未来发展 智慧城市工程是利用现代信息技术和数据分析手段&#xff0c;提升城市管理和服务水平&#xff0c;实现城市运行的智能化、便捷化和高效化的一种新型城市发展模式。智慧城市通过整合物联网&#xff08;IoT&#xff0…

授权模型MAC

MAC&#xff08;Mandatory Access Control&#xff09;是一种授权模型&#xff0c;用于实现对系统资源访问的强制控制。在MAC模型中&#xff0c;授权是基于预先定义的安全策略&#xff0c;且该策略由系统管理员来配置和管理。 在MAC模型中&#xff0c;每个用户和每个资源都被赋…

看板工具助力餐饮与酒店行业实现数字化转型,提升管理与运营效率

在餐饮与酒店行业&#xff0c;服务质量和客户体验是衡量企业成功的关键因素。随着客户需求的不断多样化以及市场竞争的加剧&#xff0c;传统的管理模式逐渐难以满足高效运营的需求。尤其在高峰期&#xff0c;如何优化内部流程、提高服务效率和响应速度&#xff0c;成为了许多餐…

2024年CCF 非专业级软件能力认证CSP-J/S 第二轮( 提高组) 染色(color)

完整题目内容可前往下方链接&#xff1a; 染色&#xff08;color&#xff09;_C_嗨信奥-玩嗨信息奥林匹克竞赛-少儿编程题库学习中心https://www.hixinao.com/tiku/cpp/show-4118.html 若需更多真题&#xff0c;可前往题库中心查找&#xff0c;题库中心涵盖白名单赛事真题&am…

OpenIPC开源FPV之Adaptive-Link天空端代码解析

OpenIPC开源FPV之Adaptive-Link天空端代码解析 1. 源由2. 框架代码2.1 消息机制2.2 超时机制 3. 报文处理3.1 special报文3.2 普通报文 4. 工作流程4.1 Profile 竞选4.2 Profile 研判4.2.1 回退策略4.2.2 保持策略 4.3 Profile 应用 5. 总结6. 参考资料7. 补充资料7.1 RSSI 和 …

labelme标签批量转换数据集json_to_dataset

文章目录 labelme标签批量转换数据集json_to_dataset转换原理单张图片转换多张图片批量转换bat脚本循环法 标注图片提取标注图片转单通道 labelme标签批量转换数据集json_to_dataset 转自labelme批量制作数据集教程。 转换原理 在安装了labelme的虚拟环境中有一个labelme_js…