Linux标准I/O库汇总整理
Linux标准I/O库(Standard I/O Library)是C标准库的一部分,提供了一系列用于文件输入输出的高级接口。这些接口通常比低级别的系统调用更易于使用,但也可能带来额外的性能开销。下面是Linux标准I/O库的汇总整理,包括常见的API及其用途:

标准I/O概述
标准I/O库通过使用缓冲区来提高读写操作的效率,同时也提供了一些高级功能,如格式化输入输出。标准I/O操作通常使用FILE类型的结构体,该结构体包含了文件的内部状态和指向缓冲区的指针。
标准I/O函数
文件流操作
-
打开文件:
fopen(const char *path, const char *mode): 打开或创建文件流。freopen(const char *path, const char *mode, FILE *stream): 重新定向一个流。
-
关闭文件:
fclose(FILE *stream): 关闭文件流。
-
刷新缓冲区:
fflush(FILE *stream): 刷新流的缓冲区。
-
判断文件结束:
feof(FILE *stream): 测试是否到达文件末尾。ferror(FILE *stream): 测试是否有错误发生。
-
清理错误标志:
clearerr(FILE *stream): 清除错误和文件结束标志。
-
文件定位:
fseek(FILE *stream, long offset, int whence): 移动文件位置指示器。ftell(FILE *stream): 获取当前文件位置指示器的位置。rewind(FILE *stream): 重置文件位置指示器到文件开头。
-
文件状态:
fstat(int filedes, struct stat *buf): 获取文件的状态。fstatfs(int filedes, struct statfs *buf): 获取文件系统的状态。
输入输出操作
-
读取文件:
fgetc(FILE *stream): 从文件读取一个字符。fgets(char *str, int n, FILE *stream): 从文件读取一行字符串。fread(void *ptr, size_t size, size_t nmemb, FILE *stream): 从文件读取数据块。
-
写入文件:
fputc(int c, FILE *stream): 向文件写入一个字符。fprintf(FILE *stream, const char *format, ...): 格式化输出到文件。fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream): 向文件写入数据块。
-
格式化输入输出:
fscanf(FILE *stream, const char *format, ...): 从文件读取格式化数据。fprintf(FILE *stream, const char *format, ...): 向文件写入格式化数据。
-
读写标准输入输出:
stdin,stdout,stderr: 标准输入、标准输出、标准错误流。
示例代码
以下是一个简单的示例,展示如何在 Linux 系统上使用 C 语言的标准I/O库打开文件、读取内容、然后关闭文件:
1#include <stdio.h>
2
3int main() {
4 FILE *file;
5 char filename[] = "example.txt";
6 char buffer[1024];
7
8 // 打开文件
9 file = fopen(filename, "r");
10 if (file == NULL) {
11 fprintf(stderr, "无法打开文件: %s\n", filename);
12 return EXIT_FAILURE;
13 }
14
15 // 读取文件内容
16 while (fgets(buffer, sizeof(buffer), file) != NULL) {
17 printf("%s", buffer); // 输出每一行
18 }
19
20 // 关闭文件
21 fclose(file);
22
23 return 0;
24}
注意事项
- 在进行文件操作时,务必检查函数的返回值以确保操作成功。
- 使用文件后记得及时关闭,以释放系统资源。
- 对于二进制文件,应使用
fopen的"rb"和"wb"模式。 - 在处理大文件时,考虑使用缓冲或分块读取以提高效率。
- 跨平台编程时要注意不同操作系统之间的 API 差异。
标准I/O库提供了非常方便的文件操作接口,适用于大多数文件处理任务。然而,在需要更高性能或更细粒度控制的情况下,可以考虑使用低级别的系统调用,如open, read, write, 和 close等。
相关文章:
Linux标准I/O库汇总整理
Linux标准I/O库(Standard I/O Library)是C标准库的一部分,提供了一系列用于文件输入输出的高级接口。这些接口通常比低级别的系统调用更易于使用,但也可能带来额外的性能开销。下面是Linux标准I/O库的汇总整理,包括常见…...
BGP路由优选+EVPN
BGP 的路由优选规则是一套多步决策链,用来确定在多个可行路由中选择最优的路由。BGP 是一种路径向量协议,通过这些优选规则,网络管理员可以控制数据流量的流向,确保网络的稳定性和效率。下面以一个实例来详细说明 BGP 的优选规则及…...
牛客练习赛131(未补)
A-小H学语文 题意:木板数量为m,想让mmh(min)最大,找出这几块木板 分析:让木板从大到小排序,找到最大的体积,将之前的木板按序列输出 代码: #include<bits/stdc.h> using n…...
功能更新丨AI黑科技助燃VR全景新势能
随着VR全景市场需求不断扩大, 为更好地赋能合作商业务发展, 酷雷曼积极推进产品技术迭代, 融合VR虚拟现实和AI人工智能, 重磅推出6大AI黑科技, 让VR全景内容更丰富、创作更加高效! 新功能怎么用&#…...
JavaCV学习第一课
1、 JavaCV [1] 是一款基于JavaCPP [2]调用方式(JNI的一层封装),由多种开源计算机视觉库组成的包装库,封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算…...
Java第二阶段---16字符串---第一节 String
1.特性介绍 String 类位于 java.lang 包中,无需引入,直接使用即可。 String 类是由 final 修饰的,表示String 类是一个最终类,不能够被继承。 String 类构建的对象不可再被更改 示例 package com.cyx.string;public class Ex…...
<十六>Ceph mon 运维
Ceph 集群有故障了,你执行的第一个运维命令是什么? 我猜测是ceph -s 。无论执行的第一个命令是什么,都肯定是先检查Mon。 在开始之前我们有必要介绍下Paxos协议,毕竟Mon就是靠它来实现数据唯一性。 一: Paxos 协议 1…...
【网络安全初识】——互联网发展史
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络安全】 本专栏旨在分享学习网络安全的一些学习笔记,欢迎大家在评论区交流讨论💌 ipconfig:显示当…...
Windows和Linux内存共享机制
Windows和Linux内存共享机制 引言1.Windows写操作读操作 2.Linux写操作读操作 3.Shell使用 tmux 运行 write 和 read说明 引言 在嵌入式开发领域,内存共享机制作为不同操作系统间实现高效数据交换的重要手段,尤其在对实时性和可靠性要求极高的环境中更为…...
windows@命令行中获取环境变量取值不展开取值(原值)
文章目录 命令行中获取环境变量取值获取不展开的值具体实现注解 封装为函数版本1版本2 命令行中获取环境变量取值 这里主要讨论获取未展开的值本来获取未展开的值应该作为默认选项,至少有合适的api方便直接调用,但是不知道微软怎么想的,让这个任务变得不直接 获取不展开的值 …...
如何找到多平台内容爆款进行批量复刻?
为了进一步扩大品牌社媒影响力,在消费者做决策的时候,能够第一时间出现在首选位置。持续在抖音、小红书、b站、公众号等各大社媒平台,产生连续的、正向的高质量品牌曝光,是非常重要的。如何进行这种多平台品牌影响力的提升呢&…...
【UML】- 用例图(结合银行案例解释其中的奥义)
目录 一、相关介绍 作用: 组成: 关系 二、使用具体银行案例解释各组成部分的含义 1、系统 2、参与者 3、用例 4、关联关系 5、扩展关系 6、泛化(继承)关系 三、成品 一、相关介绍 作用: 用例图可以描述一个…...
浅谈UI自动化
⭐️前言⭐️ 本篇文章围绕UI自动化来展开,主要内容包括什么是UI自动化,常用的UI自动化框架,UI自动化原理等。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题…...
三、k8s快速入门之Kubectl 命令基础操作
⭐️创建Pod [rootmaster ~]# kubectl run nginx --imageharbor.tanc.com/library/ngix:latest kubectl run --generatordeployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generatorrun-pod/v1 or kbectl create instead. deplo…...
深度学习-BP算法详解
BP(Back Propagation,反向传播)是训练神经网络的重要算法之一。它通过计算误差并将误差反向传播,以更新神经网络中的权重和偏置,进而使模型更好地拟合数据。 1. BP算法的基本原理 反向传播的基本思想是: …...
Java审计对比工具JaVers使用
最近有个需求,需要将页面的内容生成excel或者word文档,而且每次的修改都需要生成新的版本,同时需要记录每次修改变化的内容。我们会把每次的修改的内容提交赋值给一个java对象,同时存储到数据库一条新数据,对应数据表一…...
unity中预制体的移动-旋转-放缩
unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具,单位米)Rotate Tool(旋转工具,单位角度)Scale Tool(缩放工具,单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…...
【压力测试】如何确定系统最大并发用户数?
一、明确测试目的与了解需求 明确测试目的:首先需要明确测试的目的,即为什么要确定系统的最大并发用户数。这通常与业务需求、系统预期的最大用户负载以及系统的稳定性要求相关。 了解业务需求:深入了解系统的业务特性,包括用户行…...
ubuntu常用基本指令简记
一、在线帮助 1、help Linux命令可以分为内部命令和外部命令,内部命令就是由Linux默认Shell-bash提供的命令,而非bash提供的命令就是外部命令。 对于内部命令,可以使用help命令来获取帮助 形式为 help 指令 2、man 在日常使用中碰到的绝…...
【解决方案】用git reset --hard重置了提交但是发现reset了一些本不该reset的内容,是不是寄了?
使用 git reset --hard [commit_id] 命令后,所有的更改(包括暂存区和工作区的更改)都会被重置到指定的提交。如果想要撤销这个操作,恢复到重置之前的状态,可以尝试以下方法: 1. 使用 Git Reflog 恢复 Git…...
SeamlessM4T v2:跨语言实时对话的终极解决方案与技术实践
SeamlessM4T v2:跨语言实时对话的终极解决方案与技术实践 【免费下载链接】seamless-m4t-v2-large 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/seamless-m4t-v2-large 在全球化协作日益频繁的今天,跨语言沟通已成为技术团队、跨国…...
Kubernetes与存储管理最佳实践
Kubernetes与存储管理最佳实践 1. Kubernetes存储模型 Kubernetes存储模型定义了如何在容器化环境中管理和使用存储资源,是集群存储管理的基础。 1.1 存储模型核心概念 Volume:Pod中的存储卷,可被多个容器共享PersistentVolume (PV)ÿ…...
IDM试用期突破技术深度解析:从原理到实战的全方位解决方案
IDM试用期突破技术深度解析:从原理到实战的全方位解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 问题溯源:试用期限制的本质与认…...
OpCore-Simplify:5分钟完成黑苹果EFI配置的终极解决方案
OpCore-Simplify:5分钟完成黑苹果EFI配置的终极解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾为黑苹果配置而头痛&…...
JD-GUI:3分钟掌握Java反编译的终极免费工具
JD-GUI:3分钟掌握Java反编译的终极免费工具 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 你是否曾经面对一个没有源码的Java程序感到无从下手?或者需要快速理解第三方库的内部…...
Phi-3-mini-gguf辅助C语言学习:从指针理解到项目实战
Phi-3-mini-gguf辅助C语言学习:从指针理解到项目实战 1. 为什么选择AI辅助学习C语言 学习C语言就像学骑自行车,刚开始总会摇摇晃晃,特别是遇到指针和内存管理这些概念时,很容易"摔跟头"。传统的学习方式往往需要反复查…...
洪城寻缘角
洪城寻缘角 南昌人的免费寻缘平台 不必再奔波相亲角,不必被收费套路困扰 洪城寻缘角,全功能永久免费 无需注册即可登记,一键发布个人资料 支持多条件精准筛选,快速匹配同频有缘人 覆盖南昌全城单身,真实、高效、安心…...
Cortex-M能否运行Linux?架构与系统需求解析
1. Cortex-M与Linux的兼容性解析作为一名嵌入式开发工程师,我经常被问到"Cortex-M能不能跑Linux"这个问题。要回答这个问题,我们需要从处理器架构和操作系统需求两个维度来分析。Cortex-M系列是ARM公司推出的微控制器内核,主要面向…...
终极指南:DXVK如何彻底改变Linux游戏体验的5大关键优势
终极指南:DXVK如何彻底改变Linux游戏体验的5大关键优势 【免费下载链接】dxvk Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 在Linux上畅玩Windows独占3D游戏曾经是天方夜谭&…...
3步打造智能家居音乐自由:给爱好者的开源方案详解
3步打造智能家居音乐自由:给爱好者的开源方案详解 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 在智能家居的日常使用中,许多用户都面临着…...
