C标准I/O库函数
- 1、C标准I/O库函数
- 1.1、打开/写入/读取/关闭文件
- 1.2、读取文件数据
- 1.2.1、fgetc
- 1.2.2、fgets
- 1.2.3、fscanf
- 1.3、标准输入/输出/错误
- 2、系统调用
- 2.1、常用的系统调用
- 2.2、综合小demo
- 3、文件描述符
- 3.1、定义
- 3.2、`文件描述符`关联的数据结构
- 3.2.1、struct file
- 3.2.2、struct path
- 3.2.3、struct inode
- 3.3、`文件描述符表`关联的数据结构
- 3.3.1、打开的文件表数据结构
- 3.3.2、打开文件描述符表
- 3.3.3、fd_array和fd
- 3.3.4、文件描述符和fd或fd_array的关系
- 3.4、文件描述符引用图解
1、C标准I/O库函数
1.1、打开/写入/读取/关闭文件
fopen/fputc/fputs/fprintf/fclose/
vim fopen_test.c
===================================
#include <stdio.h>int main() {/* 打开文件char *__restrict __filename: 字符串表示要打开文件的路径和名称char *__restrict __modes: 字符串表示访问模式(1)"r": 只读模式 没有文件打开失败(2)"w": 只写模式 存在文件写入会清空文件,不存在文件则创建新文件(3)"a": 只追加写模式 不会覆盖原有内容 新内容写到末尾,如果文件不存在则创建(4)"r+": 读写模式 文件必须存在 写入是从头一个一个覆盖(5)"w+": 读写模式 可读取,写入同样会清空文件内容,不存在则创建新文件(6)"a+": 读写追加模式 可读取,写入从文件末尾开始,如果文件不存在则创建return: FILE * 结构体指针 表示一个文件FILE *fopen (const char *__restrict __filename, const char *__restrict __modes)*/char *filename = "io.txt";FILE *ioFile = fopen(filename, "a+");if (ioFile == NULL) {printf("FAILED,a+不能打开不存在的文件\n");} else {printf("SUCCESS,a+能打开不存在的文件\n");}/*写入文件一个字符int __c: 写入的char按照AICII值写入 可提前声明一个charFILE *__stream: 要写入的文件,写在哪里取决于访问模式return: 成功返回char的值 失败返回EOFint fputc (int __c, FILE *__stream)*/int putcR = fputc(97, ioFile);if (putcR == EOF) {printf("写入字符失败\n");} else {printf("写入字符成功:%c\n", putcR);}/*写入文件一个字符串char *__restrict __s: 需要写入的字符串FILE *__restrict __stream: 要写入的文件,写在哪里取决于访问模式return: 成功返回非负整数(一般是0,1) 失败返回EOFint fputs (const char *__restrict __s, FILE *__restrict __stream)*/int putsR = fputs(" love letter\n", ioFile);if (putsR == EOF) {printf("写入字符串失败\n");} else {printf("写入字符串成功:%d\n", putsR);}/*FILE *__restrict __stream: 要写入的文件,写在哪里取决于访问模式char *__restrict __fmt: 格式化字符串...: 变长参数列表return: 成功返回正整数(写入字符总数不包含换行符) 失败返回EOFfprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)*/char *name = "大海";int fprintfR = fprintf(ioFile,"哎呀,那边窗户透出了什么光?\n那是东方,而你则是太阳!\n升起吧,骄阳,去让忌妒的月黯然失色!\n\t\t%s",name);if (fprintfR == EOF) {printf("写入字符串失败");} else {printf("写入字符串成功:%d\n", fprintfR);}/*FILE *__stream: 需要关闭的文件return: 成功返回0 失败返回EOF(负数) 通常失败会造成系统崩溃int fclose (FILE *__stream)*/int result =