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