当前位置: 首页 > news >正文

本地郑州网站建设/淘宝搜索关键词排名

本地郑州网站建设,淘宝搜索关键词排名,网站建设php的心得和体会,企业邮箱申请流程man手册 普通命令。系统调用的函数。库函数。特殊文件。文件格式。游戏。附加的一些变量 IO介绍 I:input 输入 O:output 输出 对文件的输入和输出 输入-》写文件,将文件中的内容写到内存中去 输出-》读文件,将内存中的内容读取到文…

man手册

  1. 普通命令
  2. 系统调用的函数
  3. 库函数
  4. 特殊文件
  5. 文件格式
  6. 游戏
  7. 附加的一些变量

IO介绍

Iinput 输入

Ooutput 输出

对文件输入输出 输入-写文件文件中的内容写到内存

输出-读文件将内存中的内容读取文件中

linux下一切皆文件

文件类型(bcd-lsp)

  1. b:块设备文件
  2. c:字符设备文件
  3. d:目录文件
  4. -:普通文件
  5. l:链接文件
  6. s:套接字文件
  7. p:管道文件

标准IO文件IO

文件IO

内核向上提供的输出输出函数接口,叫做系统调用函数接口。基于内核,内核不同,系统调用函数接口不同,文件IO不同操作系统函数接口不通用。可移植性较差。

标准IO

标准IO是C库中定义的一组用于输入输出的函数接口。不同的操作系统只要移植了C库就可以使用,它是在系统调用之前做了一个二次封装,相当于是间接的进行了系统调用。可移植性强,可以在不同的系统环境下进行使用。

标准IO的调用逻辑

标准IO读写
if(是linux操作系统
{
    调用的就是linux的内核函数接口(文件IO
}
if(是windows操作系统)
{
    调用的就是windows的内核函数接口(文件IO)
}
if(是macos操作系统)
{
    调用的就macos的内核函数接口(文件IO)
}

标准IO在系统调用之前作了二次封装增加了缓存机制,减少了系统调用的次数,提高了程序的效率。

正常的系统调用

应用层读写文件-调用内核的函数接口-与硬件进行交互-拿到数据返回应用层-每次读写重复

带有缓存机制

应用层读写文件-调用内核的函数接口-与硬件进行交互-拿到数据返回应用层的缓存区-每次读写从缓存读取

标准IO

标准IO特点

  1. 标准IOc提供的一组专门用于输入输出的函数接口
  2. 标准IOANSI C标准定义不仅能Unix操作系统在很多的操作系统上都实现了标准IO
  3. 标准IO通过缓存机制·减少系统调用的次数提高效率
  4. 标准IO围绕进行操作stream)标准IOFILE *描述
  5. 标准IO默认打开三个流标准输入(stdin),标准输出(stdout),标准stderr)

定义

所有的I/O操作仅是简单的从程序移进或者移出,这种字节流,就称为流。

分类:

文本流/二进制流。

流指针FILE *

FILE* 是一个指向 FILE 结构体的指针,这个结构体由标准库定义,用于表示一个打开的文件或输入/输出流。

查看结构体vi -t FILE

输入1

ctrl + ]

_IO_buf_end:缓存区结束地址

_IO_buf_base:缓存区的起始地址

缓存区的分类

  1. 全缓存:基于文件

刷新全缓存:

1.程序正常退出

遇到return (main)

exit退出进程

关闭fclose流指针

2.fflush强制刷新缓存

3.缓存区满

2.行缓存 -->基于终端:stdin\stdout

刷新缓存区:

1.程序正常退出

遇到return (main)

exit退出进程

关闭fclose流指针

2.fflush强制刷新缓存

3.缓存区满

4.\n刷新

  1. .不缓存: stderr

注意:缓存区只有在使用的时候才会开辟。

示例

非正常结束不刷新

\n刷新

缓存区

fflush强制刷新

#include <stdio.h>
int fflush(FILE *stream);
功能:刷新缓存区
参数:
    stream:(NULL:刷新所有流)
返回值:成功0
  失败EOF(-1),更新errno。
用法:fflush(NULL);

标准IO函数接口

1. 打开文件:fopen
2. 关闭文件:fclose
3./写单个字符:fgetc fputc
4./写一串字符串:fgets fputs
5./写一个二进制文件:fread fwrite
6. 移动指针:fseek

fopen打开文件)

#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
功能:打开文件fopen()函数打开由 pathname 指向的文件名对应的文件,并为该文件关联一个流。
参数“argument mode”指向一个以以下序列开头的字符串(可能还包含下面描述的其他字符):参数:path:打开的文件的路径
      mode:打开方式
打开方式:
r:只读,文件指针定位到文件开头(有文件)
r+:可读可写,文件指针定位到文件开头(有文件)
w:只写,文件不存在创建,存在清空,文件指针定位到文件开头
w+:可读可写,文件不存在创建,存在清空,文件指针定位到文件开头
a: 只写,文件不存在创建,存在追加(到文件末尾)
a+:可读可写,文件不存在创建,存在追加(到文件末尾)
读文件指针定位到文件开头。
返回值:成功-的到文件流指针
        失败:NULL,更新errno

示例代码

问:一个任务中最多能打开多少个文件?(1024个)一个文件可不可以被重复的打开?(可)

注意打开的文件属于有限资源最多打开1024文件可以被重复打开打开的文件不用了需要及时关闭

fclose关闭文件)

int fclose(FILE *stream);
功能:关闭文件
参数:
stream:流指针
返回值:成功0,失败-1,更新errno示例代码
#include <stdio.h>
int main(int argc, char const *argv[])
{//打开一个名字叫test.c的文件,以只读的形式
    FILE *fp = fopen("./test.c","r");if (fp == NULL){perror("fopen filed");return -1;}printf("open success\n");fclose(fp);return 0;
}

perror

#include <errno.h>
void perror(const char *s);
功能:根据errno值获取错误信息,将信息输出到终端
参数:S:提示内容
返回值:无

fgetc读取单个字符)

int fgetc(FILE *stream);
 功能:从文件中读一个字符
 参数:
    stream:流指针(从那个文件读)
返回值:成功返回读到字符的ascii值,失败返回或读到文件结尾返回-1.

示例代码

fputc写单个字符)

int fputc(int c, FILE *stream);
功能:向指定的文件中写入一个字符
参数:
	c:要写入字符的ASCII值
	stream:流指针
返回值:写入字符ASCII值
	   失败返回:EOF

练习fgetcfputc实现cp功能A文件中的内容放入B文件

#include <stdio.h>
int main(int argc, char const *argv[])
{// 打开文件
    FILE *fp_src = fopen("./fopen.c", "r");if (fp_src == NULL){perror("open src filed");return -1;}
    FILE *fp_dest = fopen("./test.c", "w");if (fp_dest == NULL){perror("open dest filed");return -1;}//循环读取文件char ch;while ((ch = fgetc(fp_src)) != -1){fputc(ch,fp_dest);}printf("读取完成\n");fclose(fp_src);fclose(fp_dest);return 0;
}

fprintf向指定文件写入数据)

#include<stdio.h>int fprintf(FILE *stream, const char *format, ...);
功能:向指定的文件以指定的格式写入数据
参数: stream :流指针
	    format:指定格式...:多个参数
	返回值:输出字符个数
	 失败返回:EOF示例代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{// 打开一个名字叫test.c的文件,以只读的形式
    FILE *fp = fopen("./a.txt", "w+");if (fp == NULL){perror("fopen filed");return -1;}printf("open success\n");int age = 21;const char *name = "jj";double height = 156.666;fprintf(stdout,"age:%d\n",age);fprintf(fp,"name:%s\n",name);fprintf(fp,"height:%lf\n",height);fclose(fp);return 0;
}

fgets(获取字符串)

char *fgets(char *s, int size, FILE *stream);
功能:从文件中获取指定长度的字符串
参数: s:字符串存放的首地址
	 size:期望获取字符的个数   
	         实际读size-1个字符,会自动补'\0',预留一个位置补'\0'.
             文件中不满size-1个,有多少读多少,都会补'\0'.
             当读到'\n',结束,不再读下一行内容,再次调用fgets继续从下一行开始读。	 stream:文件流指针
返回值:
	成功:返回获取成功字符串存放的首地址
	失败或读到文件结尾返回NULL示例代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{// 打开一个名字叫test.c的文件,以只读的形式
    FILE *fp = fopen("./a.txt", "r");if (fp == NULL){perror("fopen filed");return -1;}printf("open success\n");char buf[64];while (fgets(buf, sizeof(buf), fp) != NULL){printf("buf:%s", buf);}fclose(fp);return 0;
}

文件指针偏移函数

1. rewind
void rewind(FILE *stream)
功能:将文件指针定位到文件开头
参数:流指针2.ftell
long ftell(FILE *stream)
功能:计算文件指针当前的位置(相对于文件开头
返回值:成功:返回当前文件指针相较于开头的字节数
        失败:-13.fseek
int fseek(FILE *stream, long offset, int whence);
		功能:将文件指针偏移到指定位置
		参数:
		    stream:流指针
			offset:偏移量   +5 --》相对于位置向后偏移5byte-5 --》相对于位置向前偏移5byte
			whence:相对位置SEEK_SET:开头SEEK_CUR:当前SEEK_END:结尾
		返回值:成功:0
		    失败:-1,更新errno
举例:
fseek(fp,-10SEEK_END
fseek(fp,-10SEEK_CUR

练习使用ftell计算文件的长度

#include <stdio.h>
int main(int argc, char const *argv[])
{
    FILE *fp = fopen(argv[1],"r");if (fp == NULL){perror("fopen filed");return -1;}//定位到文件的末尾fseek(fp,0,SEEK_END);//计算文件的长度long lenth = ftell(fp);printf("len:%ld",lenth);fclose(fp);return 0;
}

                                                                                                                                 未完待续……

相关文章:

IO进程学习笔记

man手册 普通命令。系统调用的函数。库函数。特殊文件。文件格式。游戏。附加的一些变量 IO介绍 I&#xff1a;input 输入 O&#xff1a;output 输出 对文件的输入和输出 输入-》写文件&#xff0c;将文件中的内容写到内存中去 输出-》读文件&#xff0c;将内存中的内容读取到文…...

智能手机回暖:华为点火,小米荣耀OV拱火

进入11月中下旬&#xff0c;智能手机圈再度热闹起来。包括华为、小米、OPPO、vivo等诸多手机厂商&#xff0c;都在陆续预热发布新机&#xff0c;其中就包括华为Mate 70、小米Redmi K80、vivo的S20&#xff0c;IQOO Neo10等热门新机&#xff0c;这些热门新机的集中上市迅速吸引了…...

Sqoop导入数据(mysql---->>hive)

目录 数据传输流程脚本报错和异常说明1. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf2. 数据导入hive后显示NULL 数据传输流程 mysql---->>hdfs---->>hive 数据从mysql表中取出&#xff0c;放到hdfs上&#xff08;由targ…...

实验3-实时数据流处理-Flink

1.前期准备 &#xff08;1&#xff09;Flink基础环境安装 参考文章&#xff1a; 利用docker-compose来搭建flink集群-CSDN博客 显示为这样就成功了 &#xff08;2&#xff09;把docker&#xff0c;docker-compose&#xff0c;kafka集群安装配置好 参考文章&#xff1a; …...

深度学习实验十四 循环神经网络(1)——测试简单循环网络的记忆能力

目录 一、数据集构建 1.1数据集的构建函数 1.2加载数据集并划分 1.3 构建Dataset类 二、模型构建 2.1嵌入层 2.2SRN层 2.3模型汇总 三、模型训练 3.1 训练指定长度的数字预测模型 3.2 损失曲线展示 四、模型评价 五、修改 附完整可运行代码 实验大体步骤&#x…...

k8s部署odoo18(kubeshpere面板)

Postgresql部署 链接: kubesphere搭建 postgres15 因为我的是在另一台服务器使用kubesphere进行部署的&#xff0c;如果有和我一样情况的&#xff0c;可以参考上面的文档部署postgreasql。 注意事项&#xff1a; 因为odoo不允许使用postgresql的默认用户&#xff0c;也就是po…...

【模型对比】ChatGPT vs Kimi vs 文心一言那个更好用?数据详细解析,找出最适合你的AI辅助工具!

在这个人工智能迅猛发展的时代&#xff0c;AI聊天助手已经深入我们的工作与生活。你是否曾在选择使用ChatGPT、Kimi或是百度的文心一言时感到一头雾水&#xff1f;每款AI都有其独特的魅力与优势&#xff0c;那么&#xff0c;究竟哪一款AI聊天助手最适合你呢&#xff1f;本文将带…...

Java——容器(单例集合)(上)

一 容器介绍 容器&#xff0c;是用来容纳物体、管理物体。生活中,我们会用到各种各样的容器。如锅碗瓢盆、箱子和包等 程序中的“容器”也有类似的功能&#xff0c;用来容纳和管理数据。比如&#xff0c;如下新闻网站的新闻列表、教育网站的课程列表就是用“容器”来管理 视频…...

如何配置Github并在本地提交代码

前提: 可以流畅访问github, 需要一些上网技巧, 这就自行处理了 申请一个github账号 Github官网地址 首先就是邮箱注册啦, github没有对邮箱的限制, 只要是能收邮件的就ok, qq邮箱, 163等都可以使用. 然后和普通注册账号一样, 一路填写需要的信息, 验证邮箱即可. 如何新增代…...

工作bug,keil5编译器,理解int 类型函数返回值问题,详解!!!

编写不易&#xff0c;禁止搬运&#xff0c;仅供学习&#xff0c;感谢理解 问题现象 下面是一个在keil5里面写的一个&#xff0c;int类型的返回值函数&#xff0c;这个函数里面&#xff0c;只有if else if else这三个判断条件语句&#xff0c;正常来说任何情况下&#xff0c;…...

简明速通Java接口

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文从代码层面直接整理Java接口 让老油子们无需再理解繁杂的概念了。 Java接口在代码层面是做什么的 说白了老铁&#xff0c;Java的接口就是一个类&#xff0c;这个类中只能声明属性和方法&#xff0c;属性需要…...

MVC基础——市场管理系统(二)

文章目录 项目地址三、Produtcts的CRUD3.1 Products列表的展示页面(Read)3.1.1 给Product的Model里添加Category的属性3.1.2 View视图里展示Product List3.2 增加Product数据(Add)3.2.1 创建ViewModel用来组合多个Model3.2.2 在_ViewImposts里引入ViewModels3.2.3 添加Add的…...

java------------常用API preiod duration 计算时间差

1&#xff0c;preiod 如果末天数比初天数小&#xff0c;需要进一位 package API;import java.time.LocalDate; import java.time.Period;public class preiod {public static void main(String[] args) {// 计算时间差// LocalDate获取对象其中的一个方法LocalDate d1 LocalD…...

使用 FAISS 进行高效相似性搜索:从文本检索到动态数据处理

在现代数据科学和人工智能应用中&#xff0c;处理大量高维数据并从中找到相似项是一个常见任务。无论是在推荐系统、搜索引擎&#xff0c;还是在自然语言处理应用中&#xff0c;如何高效地进行相似性搜索&#xff08;Similarity Search&#xff09;一直是一个挑战。为了解决这个…...

执行“go mod tidy”遇到“misbehavior”错误

执行“go mod tidy”报错下错误&#xff0c;执行“go clean -modcache”和删除“go env GOMODCACHE”指定目录均无效&#xff1a; SECURITY ERROR go.sum database server misbehavior detected!old database:go.sum database tree3397826xyyhzdyAOat5li/EXx/MK1gONQf3LAGqArh…...

深入详解人工智能机器学习:强化学习

目录 强化学习概述 强化学习的基本概念 定义 关键组件 强化学习过程 常用算法 应用示例 示例代码 代码解释 应用场景 强化学习核心概念和底层原理 核心概念 底层原理 总结 强化学习概述 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是机器学习中的…...

力扣打卡11:合并区间(比较器内联,引用传参的优化)

链接&#xff1a;56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 这道题可以用贪心。 首先将intervals的left&#xff08;intervals[i][0]&#xff09;排序。 然后拿出第一个区间&#xff0c;比较后面相邻的区间&#xff1a; 当前right<后left&#xff0c;表示下一…...

《 bilibili-起步级 用户模块接口文档 经验分享 ~》

bilibili - 用户模块接口文档 - 经验分享 ~ 数据库er关系图 : 迅速跳转链接 枚举码实体类 : 迅速跳转链接 使用apifox.json格式导入接口文档 步骤 登录Apifox。新建文件, 将代码粘贴到该文件, 并更改后缀为 .apifox.json进入项目&#xff0c;点击“导入”。选择“Apifox”格式…...

AES 与 SM4 加密算法:深度解析与对比

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

启保停电路如何接到PLC

传感器&#xff1a;NPN :棕&#xff1a;正 蓝&#xff1a;负 黑&#xff1a;信号 1M——>24V PNP&#xff1a;1M——>0V...

HTTP multipart/form-data 请求

序言 最近在写项目的过程中有一个需求是利用 HTTP 协议传输图片和视频&#xff0c;经过查询方法相应的方法发现使用 multipart/form-data 的方式&#xff0c;这是最常见处理二进制文件的表单编码类型。  学习了一下午&#xff0c;现在总结一下使用的方法和相关的知识点&#x…...

配置服务器的免密登录

在服务器中配置别名和免密登录 如果没有生成过公钥和密钥 ssh-keygen然后就生成了公钥和密钥&#xff0c;下一步进入.ssh文件夹 cd .ssh/可以看到文件夹中会多出来三个文件 id_rsa&#xff1a;密钥id_rsa.pub&#xff1a;公钥known_hosts&#xff1a;A通过ssh首次连接到B&am…...

普通遥控电动遮阳雨棚怎么接入米家并用苹果手机Siri控制

环境&#xff1a; 遥控电动遮阳雨棚 无线射频拷贝器 米家APP 问题描述&#xff1a; 普通遥控电动遮阳雨棚怎么接入米家并用苹果手机Siri控制 解决方案&#xff1a; 1.先看看遥控器射频参数,有些在里面板子上&#xff0c;要拆开才能看到&#xff0c;我这是433的 2.到网店…...

两种不同简缩极化的六个方程

方程1 (3*A*(b - a*1i 1) - A*((c d*1i)*(f1 f2*1i)*1i - (c d*1i)^2))*(a - b*1i)*1i 3*A*(b - a*1i 1) 2*(A*(c f2 d*1i - f1*1i) A*(c d*1i - (a b*1i)*(c d*1i)*1i))*(c - d*1i) (A*(c f2 d*1i - f1*1i) A*(c d*1i - (a b*1i)*(c d*1i)*1i))*(f1 - f2…...

环形缓冲区(Ring Buffer):概念、功能、使用场景与实现

一、概念 环形缓冲区&#xff08;Ring Buffer&#xff09;&#xff0c;又称循环缓冲区&#xff0c;是一种用于数据缓冲的数据结构。其核心思想是将缓冲区视为一个环形结构&#xff0c;当数据写入到缓冲区的末尾时&#xff0c;会自动回绕到缓冲区的开头继续写入&#xff0c;形成…...

大连理工大学数据结构2003年硕士入学试题

大连理工大学2003年硕士入学试题 数据结构部分(共75分) 一、回答下列问题(20分) 1&#xff0e;循环队列用数组A[0&#xff0e;&#xff0e;m—1)存放其数据元素。设tail指向其实际的队尾&#xff0c;front指向其实际队首的前一个位置&#xff0c;则当前队列中的数据元素有多少个…...

Master EDI 项目需求分析

Master Electronics 通过其全球分销网络&#xff0c;支持多种采购需求&#xff0c;确保能够为客户提供可靠的元件供应链解决方案&#xff0c;同时为快速高效的与全球伙伴建立合作&#xff0c;Master 选择通过EDI来实现与交易伙伴间的数据传输。 EDI为交易伙伴之间建立了一个安…...

图海寻径——图相关算法的奇幻探索之旅

一、图的表示 1. 邻接矩阵 (Adjacency Matrix) #include <iostream> #include <vector> #include <queue> #include <limits>using namespace std;class GraphMatrix { private:int numVertices;vector<vector<int>> adjMatrix;const st…...

亚马逊云科技re:Invent:生成式AI与全球布局

作为全球云计算和人工智能领域一年一度的顶级盛宴&#xff0c;亚马逊云科技2024 re:Invent全球大会吸引了超过6万名现场观众以及40多万名线上参会者。而大会上生成式AI的相关话题和内容&#xff0c;也成为了所有观众关注的焦点。 大会期间&#xff0c;亚马逊云科技全球服务副总…...

Android 因为混淆文件配置,打release包提示running R8问题处理

一、报错信息 Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in E:\workplace\xxxxxx\app\build\outputs\mapping\release\missing_rules.txt. Missing class org.mediakit.R$layout (refer…...