C语言 标准与底层 I/O

这篇是个草稿,信息待整理

Prerequisite: File descriptor(FD) 和 File Pointer(FP)

FD 是一个int数,像进程序号一样表示一个被打开的文件。FP是一个C语言指针,本身是一个16进制内存地址。地址指向的是打开的文件。

Open/Close

Int open(const char *pathname, int flags)

flags:

O_RDONLY 只读

O_WRONLY 只写

-RDWT 可读写

返回打开文件的file descriptor

FILE* fopen(const char * path,const char * mode);

返回指向文件的指针

mode:

-r : 只读 -rb: 二进制只读

-w:只写 -wb:二进制写 (若文件已存在,w操作会直接抹去文件之前的内容)

-a:只写 -ab:二进制写(若文件已存在,新的写入会放在文件现有内容之后)

注:以上的这三种模式后加上”+” 则可以把文件作为可读写文件打开,但w仍然会删除文件已有部分,r仍要求文件必须存在。

关闭文件用:

Int close(int fd)

返回0表示成功,-1表示error

int fclose(FILE * stream);

返回0表示成功,EOF表示error

Read/Write:

UNIX函数,这是Unbuffered, 没有缓冲(执行需要读取4次磁盘)返回 File Descriptor (int)。实个System Call

Fread/fwrite:

C库中的函数,通过特殊的顺序调用Read/Write,节约读取次数。返回 FILE*

int fwrite(void* input, size_n size, int num, FILE* ptr):

文件写入,会以size所规定的变量类型进行输入。如char的size=1bit,int的size=4bit。input指向输入值的内存地址,size表示输入的变量类型,num表示输入这种类型变量的数量,ptr指针指向要写入的文件。

void fprintf (FILE* ptr, constant char* direction, object input):

会先用printf的方式处理第二三个输入值,生成一个长的字符串后输入给ptr指向的文件。

本文为个人整理所得,未经允许请勿转载。可以使用外链。

Scroll to Top