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.rhkb.cn/news/493010.html

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

相关文章

jQuery总结(思维导图+二维表+问题)

关于什么是jQuery:(下面是菜鸟里的介绍) jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 而jQuery对我的感受就是,链式运用的很形象,隐式迭代还有一些兼容性强的优点&…

python数据分析:介绍pandas库的数据类型Series和DataFrame

安装pandas pip install pandas -i https://mirrors.aliyun.com/pypi/simple/ 使用pandas 直接导入即可 import pandas as pd pandas的数据结构 pandas提供了两种主要的数据结构:Series 和 DataFrame,类似于python提供list列表,dict字典,…

安装opnet14.5遇到的问题

安装opnet遇到的问题 我是按照这个教程来安装的。 然后遇到了两个问题&#xff1a; 1、“mod_dirs”目录问题 Can’t enable ETS scripting support due to missing files。 This is likely because:<opnet_release_dir>\sys\lib is notinclude in the “mod_dirs” pre…

SLAAC如何工作?

SLAAC如何工作&#xff1f; IPv6无状态地址自动配置(SLAAC)-常见问题 - 苍然满关中 - 博客园 https://support.huawei.com/enterprise/zh/doc/EDOC1100323788?sectionj00shttps://www.zhihu.com/question/6691553243/answer/57023796400 主机在启动或接口UP后&#xff0c;发…

6.3.1 MR实战:计算总分与平均分

在本次实战中&#xff0c;我们的目标是利用Apache Hadoop的MapReduce框架来处理和分析学生成绩数据。具体来说&#xff0c;我们将计算一个包含五名学生五门科目成绩的数据集的总分和平均分。这个过程包括在云主机上准备数据&#xff0c;将成绩数据存储为文本文件&#xff0c;并…

空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新

在科技飞速发展的时代&#xff0c;遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究&#xff0c;空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而&#xff0c;对于许多专业人士而言&#xff0c;如何高效地处…

基于langchain的Agent(实现实时查询天气)

心血来潮&#xff0c;玩一下Agent&#xff0c;实现了多轮对话功能 import requests, jsonfrom langchain.agents import load_tools from langchain.agents import initialize_agent from langchain_community.llms.tongyi import Tongyi from langchain.memory import Conver…

《剑网三》遇到找不到d3dx9_42.dll的问题要怎么解决?缺失d3dx9_42.dll是什么原因?

《剑网三》游戏运行中d3dx9_42.dll缺失问题深度解析与解决方案 在畅游《剑网三》的武侠世界时&#xff0c;不少玩家可能会遇到系统提示“找不到d3dx9_42.dll”的报错信息。这一突如其来的问题不仅让游戏进程受阻&#xff0c;还可能让玩家陷入困惑与无奈。我将为大家深入剖析这…

springboot443旅游管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统旅游管理系统信息管理难度大&#xff0c;容错率低&#…

OneCode:开启高效编程新时代——企业定制出码手册

一、概述 OneCode 的 DSM&#xff08;领域特定建模&#xff09;出码模块是一个强大的工具&#xff0c;它支持多种建模方式&#xff0c;并具有强大的模型转换与集成能力&#xff0c;能够提升开发效率和代码质量&#xff0c;同时方便团队协作与知识传承&#xff0c;还具备方便的仿…

OpenCV(python)从入门到精通——运算操作

加法减法操作 import cv2 as cv import numpy as npx np.uint8([250]) y np.uint8([10])x_1 np.uint8([10]) y_1 np.uint8([20])# 加法,相加最大只能为255 print(cv.add(x,y))# 减法&#xff0c;相互减最小值只能为0 print(cv.subtract(x_1,y_1))图像加法 import cv2 as…

git 删除鉴权缓存及账号信息

在Windows系统下 清除凭证管理器中的Git凭据 按下Win R键&#xff0c;打开“运行”对话框&#xff0c;输入control&#xff0c;然后回车&#xff0c;打开控制面板。在控制面板中找到“用户账户”&#xff0c;然后点击“凭据管理器”。在凭据管理器中&#xff0c;找到“Windows…

【Linux进程】进程间的通信

目录 1. 进程间通信 1.1 进程间通信的目的 2. 管道 2.1 什么是管道 2.2. 匿名管道 匿名管道的特性 管道的4种情况 联系shell中的管道 2.3. 命名管道 代码级建立命名管道 2.4. 小结 总结 1. 进程间通信 进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&…

leecode494.目标和

这道题目第一眼感觉就不像是动态规划&#xff0c;可以看出来是回溯问题&#xff0c;但是暴力回溯超时&#xff0c;想要用动态规划得进行一点数学转换 class Solution { public:int findTargetSumWays(vector<int>& nums, int target) {int nnums.size(),bagWeight0,s…

会话守护进程

会话&&守护进程 文章目录 会话&&守护进程1.会话1.概念和特性2.创建会话3.getsid和setsid函数getsid函数setsid 函数 4.代码 2.守护进程3.创建守护进程模型守护进程创建步骤&#xff1a;两个函数 完整代码&#xff1a; 1.会话 1.概念和特性 进程组&#xff0c…

学习反射(反射的使用,反射的应用场景)

目录 反射的使用 总的测试代码如下 反射的应用场景 反射的使用 大家先看一个案例 有一个person 类 属性有 String 类型的 name ,int age &#xff0c;还有一个 方法 a。 package fs;public class Person {private String name;private int age;public void a(){System.out.p…

在ESP32使用AT指令集与服务器进行TCP/IP通信时,<link ID> 解释

在ESP32使用AT指令集与服务器进行TCP/IP通信时&#xff0c;<link ID> 是一个非常重要的参数。它用于标识不同的连接实例&#xff0c;特别是在多连接场景下&#xff08;如同时建立多个TCP或UDP连接&#xff09;。每个连接都有唯一的<link ID>&#xff0c;通过这个ID…

Ansible 批量管理华为 CE 交换机

注&#xff1a;本文为 “Ansible 管理华为 CE 交换机” 相关文章合辑。 使用 CloudEngine - Ansible 批量管理华为 CE 交换机 wsf535 IP 属地&#xff1a;贵州 2018.02.05 15:26:05 总体介绍 Ansible 是一个开源的自动化运维工具&#xff0c;AnsibleWorks 成立于 2012 年&a…

【python虚拟环境安装】linux centos 下的python虚拟环境配置

linux centos 下的python虚拟环境配置 在 CentOS 环境中处理 pip 安装警告的方法1. 创建并使用虚拟环境2. 忽略警告并继续使用 root 用户安装&#xff08;不推荐&#xff09;报错问题处理 在 CentOS 环境中处理 pip 安装警告的方法 当在 CentOS 环境中遇到 pip 安装警告时&…

【Datawhale AI 冬令营】如何动手微调出自己的大模型

目录 总体思路实操案例数据集构造收集数据数据构造 模型微调选择模型选择数据集参数配置开始训练 模型使用 总体思路 微调大模型主要以开源的通用大模型为基础&#xff0c;喂给模型自己准备的数据&#xff0c;将通用的大模型往自己想要的方向引导&#xff0c;变成更偏向某一领…