标准IO 和 文件IO的区别
标准IO:
标准IO可以减少系统调用的次数,提高系统效率
标准IO的核心对象是流,没打开一个文件,就会创建FILE结构体,标准IO函数都基于流进行各种操作。
标准IO的缓冲机制默认为全缓冲。
文件IO:
文件IO每次操作都会执行系统调用,可以直接读写实际文件,但会增加系统开销
每打开一个文件,系统就会自动分配一个文件描述符。
标准IO
打开和关闭文件流
打开 fopen
FILE *fopen(const char *path,const char *mode);
//参数1:文件名
//参数2:打开方式
//返回值:打开成功返回文件流指针,失败返回NULL
打开文件的相关参数
- r/rb 打开只读文件(文件必须存在)
- r+ / r+b打开可读写的文件(文件必须存在)
- w / wb 打开只写文件(文件清空写入,文件不存在就会建立)
- w+ / w+b 打开可读写文件(文件存在清空写入,不存在就会建立)
- a / ab 以追加的方式打开只写文件(存在追加到末尾,不存在就会建立)
- a+ / a+b / ab+ 以追加的方式打开可读写文件(存在追加到末尾,不存在就会建立)
关闭文件 fclose
int fclose(FILE *stream);
//参数:文件流指针
//返回值:成功返回0,失败返回EOF,并设置errno。
读写文件流
按字符读写文件
fputc()读取一个字符写入文件;
int fputc(int c,FILE *stream);
//参数1:int (0——127)
//参数2:文件流指针
fgetc()从文件中取出一个字符
int fgetc(FILE *stream);
//参数:文件流指针
//返回值:成功返回读取到的字符,返回EOF表示到了文件尾
例子:模拟cat命令
int main(int argc,char *argv[])
{
char ch = '\0';
if(argc < 2)
{
printf