首页 > 其他分享 >标准I/O介绍

标准I/O介绍

时间:2023-06-07 23:12:08浏览次数:31  
标签:调用 函数 errno 介绍 标准 IO fopen

1. I/O概述

I/O:Input & Output,I/O操作是一切实现的基础,比如中间产生的一些数据,我们就可以利用I/O操作,将它们保存下来。如果没有I/O,那么我们就相当于什么数据都无法保存。

I/O的操作包括两个部分:

标准IO: stdio

系统调用IO: sysio,又称为文件IO

标准IO和系统调用IO如何进行区分:如果两个IO都可以使用,那么我们优先选择标准IO。因为标准IO移植性要好

标准IO是依赖于系统调用IO实现的

比如说fopen函数,在linux下面依赖于open函数;在windows环境下,依赖于openfile

open和openfile函数就是kernel提供出来的系统调用IO,而fopen函数就是标准IO,在哪个平台下利用fopen函数都能实现打开一个文件的作用,但它依赖的系统调用是不同的。

2. stdio

注意标准IO提供的函数都在man手册的第3章

打卡、关闭函数

fopen() : 

fclose():

对字符的读写函数

fgetc():

fputc():

对字符串的读写函数:

fgets()

fputs()

对数据块的的操作函数:

fread()

fwrite()

 

printf()

scanf()

 

文件位置指针的操作:

fseek();

ftell();

rewind();

 

合并系统调用,即起到buffer和cache的作用

fflush()

 

标准IO中有一个类型贯穿始终,该类型就是大写的FILE类型。

3.标准IO讲解

3.1 fopen

man fopen

path: 指定要打开的文件;

mode:指定打开的文件的权限,读写等等

返回值为FILE类型的指针,也就是结构体的起始位置。(因为FILE本身就是一个结构体类型)

errno是一个全局变量,你用我也用,如果现在出错了,我会把出错的原因放到errno这个全局变量上。换句话说,如果当前进行完某个操作,如果它出错了,它会把值放到errno上,此时作为程序员就需要马上打印errno的值,来进行查看错误出现的原因。如果没有及时的进行打印,继续做别的工作,那么errno也会记录其他的错误原因。这样就会出现这样的一个情况,errno如果没有及时的打印,它会被覆盖。

在最早的定义中,errno就是一个整型变量,例如errno-base.h中所展现的那样。但是现在已经不是这样了,errno已经被重构了,我们把它私有化之后,errno其实是一个宏了。

 

标签:调用,函数,errno,介绍,标准,IO,fopen
From: https://www.cnblogs.com/-glb/p/17464841.html

相关文章

  • Java基本概念介绍
    Java基本概念介绍Java是一种面向对象的编程语言,由JamesGosling等人在1995年开发而成。Java是跨平台的,这意味着可以在不同的操作系统上运行相同的程序。Java具有许多优点,包括安全性、可移植性、高效性和可扩展性。Java的基本结构Java程序在类中编写。每个Java程序至少需要一个类,并......
  • 车载测试的基本介绍
    一、什么是车载测试?车载测试是指在汽车领域中对车辆及其相关系统进行测试和诊断的过程。它是一种系统性的测试方法,旨在评估车辆的功能、性能、安全性、可靠性,并确保其符合预定的标准和规范。 二、车载测试的发展现状与市场前景如何?随着人工智能、无人驾驶和新能源汽车产业的......
  • 软件测试求职记——如何向面试官介绍自己
    一、项目目的讲解流程:(讲述业务时长10-15分钟为宜)1.自我介绍礼貌用语,姓名,籍贯,学校,个人技能,经验,表现,兴趣爱好等 ,1-2分钟,谢谢比如举例如下:面试官你好,我叫XXX,毕业于芜湖职业技术学院。。从事软件测试已经有4年了,主要工作是web的功能测试,app测试,性能,自动化也有涉及 2.介绍项目的......
  • python @property、@setter、@deleter的介绍与使用
    @property是一个装饰器,使一个方法可以像属性一样被使用,而不需要在调用的时候带上()0x01@property使用我们通过一个简单的研发需求为背景,逐步解释各个装饰器的使用这里领导给了个需求,开发一个类,可以返回一个人的姓,名字以及全名,十分简单嘛classPerson():def__init__(se......
  • Vue中ref和$refs的介绍及使用
    在JavaScript中需要通过document.querySelector("#demo")来获取dom节点,然后再获取这个节点的值。在Vue中,我们不用获取dom节点,元素绑定ref之后,直接通过this.$refs即可调用,这样可以减少获取dom节点的消耗。ref介绍: ref被用来给元素或子组件注册引用信息。引用信息将会注册在父......
  • mysql 慢查询的简要介绍
    如何配置与查看慢查询mysql慢查询相关命令:#查看慢查询是否开启SHOWVARIABLESLIKE'%slow_query_log%'#开启慢查询SETGLOBALslow_query_log='ON'#查看慢查询日志位置SHOWVARIABLESLIKE'%slow_query_log_file%'#查看慢查询阈值,单位:秒SHOWGLOBALVARIABLES......
  • BOS EDI 项目 Excel 方案开源介绍
    BOSEDI&Excel方案简介本文将继续分享BOS示例工作流:使用Excel端口和Email端口生成一系列文件,完成与BOS的EDI通信。下载工作流  下载示例文件 BOSEDI到Excel示例流具有预配置的端口,用于从BOS的EDI集成规范转换以下交易集:1.4905物料需求计划,BOS->企业2.4913发货通......
  • kratos中使用etcdWatch介绍
    项目地址https://gitee.com/huoyingwhw/kratos_etcd_watch使用原生的etcdAPI的测试 packagetestsimport("context""fmt""github.com/stretchr/testify/require"clientv3"go.etcd.io/etcd/client/v3""tes......
  • vCenter下标准交换机迁移到分布式交换机
    一、在vCenter上创建分布式交换机可以创建默认端口组,或者后面手动创建 二、添加主机分配上行链路,选择未使用的物理适配器,建议每台分配两个冗余的物理网卡管理VMkernel适配器,这里先不迁移迁移虚拟机网络,这也先不迁移,点完成即可; 三,迁移标准交换机端口组到分布式交换......
  • 深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型
    深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍1.LeNet(1998)LeNet是最早的卷积神经网络之一<sup>[1]</sup>,其被提出用于识别手写数字和机器印刷字符。1998年,YannLeCun第一次将LeNet卷积神经网络应用到图像分类......