我的github: https://github.com/WHJWNAVY

标准IO与文件IO

嵌入式编程 Ann, Pepper 2227℃

文件:

{

文件:一组相关数据的有序集合。

文件名:这个数据集合的名称。

}

 
 

按类型分类(七类):

{

常规文件{ASCII码文件,二进制文件}

目录{存放的并不是真正的文件,而是文件名和文件链接}

字符设备{显示器,键盘,网卡…}

块设备{磁盘,硬盘,优盘…可以随机读取}

有名管道{用于进程间通信。管道:前一个命令的输出作为后一个命令的输入}

套接口{用于网络通信}

符号链接{快捷方式,指向真正的文件}

}

I/O

{

标准IO:跨平台通用

文件IO:不能跨平台通用。

}

标准IO(流和FILE对象)

{

文件指针:

{

每个被使用的文件都在内存中开辟一个区域,用来存放文件的相关信息,

这些信息是保存在一个结构体类型的变量中,该结构体类型是由系统定义的,

取名为FILE。

标准IO库的所有操作都是围绕流来进行的,在标准IO中,流用FILE*来操作。

}

流:

{

定义:所有的IO操作仅是简单的从程序移进或移出,这种字节流就称为流。

流没有消息边界。

分类:文本流,二进制流。

}

文件缓冲:

{

缓冲文件系统:(高级磁盘IO)

非缓冲文件系统:(低级磁盘IO)

}

缓存分类:

{

全缓存

行缓存:’\n’

不带缓存

}

标准输入:stdid—0—STDIN_FILENO

标准输出:stdout—1—STDOUT_FILENO

标准错误:stderr—2—STDERR_FILENO

}

 
 

标准IO函数

{

打开流:fopen,freopen,fdopen

关闭流:fclose

流读写:getc,fgetc,getchar

二进制IO

{

fread:

fwrite:

}

}

 
 

UNIX文件:

输入输出:

{

文件描述符:

{

顺序分配的非负整数。

内核用以标识一个特定进程正在访问的文件。

其他资源的访问标识。

}

标准输入、标准输出和错误处理:

{

由shell默认打开,分别为0/1/2。

}

不用缓存的IO

{

通过文件描述符进行访问。

open()/read()/write()/lseek()/close()…

}

标准IO

{

通过FILE*进行访问。

fopen()/fread()/fwrite()/fseek()/fclose()…

}

}

出错处理:

{

全局错误代码:

{

在errno.h中定义,全局可见。

错误值定义为”EXXX”形式。

}

处理规则:

{

只有出错时才需要检查errno的值。

任何函数都不会将errno设置为0,errno.h中定义了所有常熟都不为0。

}

错误信息输出:

{

perror

strerror

}

}

 
 

系统调用和库函数:

文件IO:

{

函数:

{

open()

close()

read()

write()

lseek()

}

}

转载请注明:胡椒小兄弟 » 标准IO与文件IO

喜欢 (1)or分享 (0)