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

news2024/12/22 4:02:28

在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.coloradmin.cn/o/2263568.html

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

相关文章

【Java基础面试题025】什么是Java的Integer缓存池?

回答重点 Java的Integer缓存池(Integer Cache)是为了提升性能和节省内存。根据实践发现大部分的数据操作都集中在值比较小的范围,因此缓存这些对象可以减少内存分配和垃圾回收的负担,提升性能 在 -128到127范围内的Integer对象会…

AI广告爆发元年,心动网络能否成下一个Applovin?

如果说2023年标志着AI大模型技术的崛起,那么2024年无疑是AI广告应用爆发的元年。 大洋彼岸的Applovin凭借着智能广告分发引擎完成彻底翻身,股价上涨超过30倍。一跃成为AI领域乃至整个美股市场的明星。 与此同时,心动网络作为同样深耕于游戏…

基于Python3编写的Golang程序多平台交叉编译自动化脚本

import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数,设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…

java全栈day20--Web后端实战(Mybatis基础2)

一、Mybatis基础 1.1辅助配置 配置 SQL 提示。 默认在 mybatis 中编写 SQL 语句是不识别的。可以做如下配置: 现在就有sql提示了 新的问题 产生原因: Idea 和数据库没有建立连接,不识别表信息 解决方式:在 Idea 中配置 MySQL 数…

MacOS下PostIn安装配置指南

PostIn是一款开源免费的接口管理工具, 下面介绍私有部署版本的MacOS下安装与配置。私有部署版本更适合有严格数据安全要求的企业,实现对数据和系统的完全控制。   1、MacOS服务端安装 Mac安装包下载地址:下载Mac安…

【Apache Doris】周FAQ集锦:第 26 期

SQL问题 Q1 doris 3.0存算分离模式下,建表的时是否需要指定表的副本数 不需要,指定了也会忽略;存算分离模式下,数据副本由远端存储去管控。 Q2 doris 通过dbeaver查询时报错:[SXXXX]… doris的错误码通常都是EXXXX&…

【Mongo工具】Mongo迁移工具之Mongo-shake

Mongo-Shake 简介 Mongo-Shake 是一个基于 MongoDB 操作日志(oplog)的通用服务平台。它从源 MongoDB 数据库中获取操作日志,并在目标 MongoDB 数据库中重放,或者通过不同的隧道发送到其他终端。如果目标端是 MongoDB 数据库&…

【Unity基础】AudioSource 常用方法总结

在 Unity 中,AudioSource 组件用于控制音频的播放和管理。以下是常用的 AudioSource 控制方法及其说明。 1. 播放和暂停音频 Play():开始播放音频,如果是从暂停的地方继续播放,可以直接调用。Pause():暂停当前播放的…

flink SQL实现mysql source sink

接上文:一文说清flink从编码到部署上线 环境说明:MySQL:5.7;flink:1.14.0;hadoop:3.0.0;操作系统:CentOS 7.6;JDK:1.8.0_401。 1.代码实现 1.1 E…

知乎 PB 级别 TiDB 数据库集群管控实践

以下文章来源于知乎技术专栏 ,作者代晓磊 导读 在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方…

SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频

要使用阿里云视频点播(VOD)实现一个教育网站,其中用户需要成为会员后才能查看视频,这个过程包括上传视频、设置权限控制、构建前端播放页面以及确保只有付费会员可以访问视频内容。 1. 视频上传与管理 创建阿里云账号&#xff…

【前端】 async 和 await 以及 generator生成器函数

一、背景 这一篇随机主要是想记录一下自己学习js中有关异步内容的东西。然后发现有人拿异步跟生成器函数进行比较了一下,因此一起学习了一下。 二、知识点相关内容及实验test 2.1 generator 生成器函数 generator函数的作用:每次访问返回函数中yield…

智能座舱进阶-应用框架层-Handler分析

首先明确, handler是为了解决单进程内的线程之间的通信问题的。我也需要理解Android系统中进程和线程的概念, APP启动后,会有三四个线程启动起来,其中,有一条mainUITread的线程,专门用来处理UI事件&#xf…

windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器

不要纠结,直接选择用perl编译! 告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦 告诫,以下执行的每一步,都不要纠结 先安装环境 nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-…

汽车供应链 “剧变”开始,“智能感知潜在龙头”诞生

智能汽车产业链“剧变”已经开启,智能感知软硬件能力的权重正在不断被放大。 比如满足高阶泊车的第二代AK2超声波传感器、满足人机共驾场景需求的电子外后视镜(CMS)、iTOF 3D成像视觉感知(用于舱内监控)等新产品&…

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天,用 Python 和 OpenCV 结合机器学习实现物体识别,不仅是酷炫技能,更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入,识别人、动物、车辆及其他物品,让你的程序瞬间具备 AI …

JVM 详解

一. JVM 内存区域的划分 1. 程序计数器 程序计数器是JVM中一块比较小的空间, 它保存下一条要执行的指令的地址. [注]: 与CPU的程序计数器不同, 这里的下一条指令不是二进制的机器语言, 而是Java字节码. 2. 栈 保存方法中的局部变量, 方法的形参, 方法之间的调用关系. 栈又…

C# opencvsharp 流程化-脚本化-(2)ROI

ROI ROI也是经常需要使用的方法。特别是在图像编辑中。ROI又称感兴趣的区域,但是图像是矩阵是矩形的,感兴趣的是乱八七糟的,所以还有一个Mask需要了解一下的。 public class RoiStep : IImageProcessingStep{public ImageProcessingStepType…

wazuh-modules-sca-scan

sca模块主函数wm_sca_main -> wm_sca_start 检查policy文件中的每一个项目wm_sca_check_policy static int wm_sca_check_policy(const cJSON * const policy, const cJSON * const checks, OSHash *global_check_list) {if(!policy) {return 1;}const cJSON * const id c…

uniapp 自定义图标03

插入工程,修改名称文件内容 编译运行