标准io <stdio.h>
- 打开文件的操作,fopen函数
fcolse()函数是匹配的关闭打开的文件接口的操作
FILE * fp = fopen("文件路径","选项");
//选项(权限):
a+:往文件中追加内容
r:只读取文件
r+:可读可写
w:程序往文件中输出内容(打开文件时会清空文件内容,文件不存在会创建文件)
w+:文件存在了不会清空原有内容
//返回值:
文件流指针
和fopen匹配的输入输出函数有
fscanf();格式化输入
int fscanf(打开的文件接口,也就是文件流指针,输入内容在程序的存储位置);
fprintf();格式化输出
int fprintf(文件流指针,要往文件中输出内容的在程序中的位置);
fgetc();单个字符输入,每次就读取一个字符
int fgetc(文件流指针);
返回值为读取的字符的ASCII码
fputc();单个字符输出,每次就往文件中输出一个字符
int fputc(字符的ASCII码也就是要输出的字符,文件流指针);
fgets();多个字符输入,遇到特殊位置会中断,像'\0','\n'这样
char * fgets(要在程序中存储的位置, 要读取的字符大小:字节数, 文件流指针);
返回值:就是参数1
fputs();多个字符输出,直至输出到'\0'
int fputs(程序中要往文件输出的内容,文件流指针);
- open();打开文件函数
文件io;有专门的库
对应的close()函数,用来关闭打开的文件接口
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int fd = open("文件路径",选项flag | 权限 );
选项(权限):
O_RDONLY:只读
O_WRONLY:只写
O_CREAT:路径中没有文件就创建文件
返回值:整数
文件描述符,表示打开的文件
与open()函数匹配的输入,输出函数
read();文件输入函数
int read(文件描述符,内容在程序中的位置,要读取的大小);
返回值:
读取成功的字符个数;
write();文件输出函数
int write(fd,程序中要输出的位置,要输出的大小);
返回值:
输出成功的字符个数;
- fopen()与open()的打开文件时的操作的比较:
│fopen() mode │ open() flags │
├─────────────┼───────────────────────────────┤
│ r │ O_RDONLY │
├─────────────┼───────────────────────────────┤
│ w │ O_WRONLY | O_CREAT | O_TRUNC │
├─────────────┼───────────────────────────────┤
│ a │ O_WRONLY | O_CREAT | O_APPEND │
├─────────────┼───────────────────────────────┤
│ r+ │ O_RDWR │
├─────────────┼───────────────────────────────┤
│ w+ │ O_RDWR | O_CREAT | O_TRUNC │
├─────────────┼───────────────────────────────┤
│ a+ │ O_RDWR | O_CREAT | O_APPEND │
└─────────────┴───────────────────────────────┘
- 总结
标准io中:
标准终端输入流是:stdin
标准终端输出流是:stdout
文件io中:
终端输入文件描述符:0
终端输出文件描述符:1