文件 和 流
文件是具有永久性存储特定顺序的字节组成的一个有序的、有名称的集合。
流是一种抽象概念,是物质从一处向另外一个地方流动的过程。
文件缓冲区:
全缓冲、行缓冲、无缓冲(_IOFBF 、IOLBF、 IONBF)。
文件指针:
struct _IO_FILE{
int _flags;
#define _IO_file_flags _flags
}
修改其缓冲区类型:
extern void setbuf(FILE *__restrict __stream, char *__restrict __buf);
第一个参数为要操作的流的对象,第二个为指向的一个长度为__buf的缓冲区,如果buf被设置为NULL, 那么则关闭缓冲区。
extern void setvbuf(FILE *__restrict __stream, char *__restrict __buf,int __mode, size_t __n );
第二个参数为buf必须指向一个长度为bufsiz的缓冲区,第三个参数为缓冲区类型,第四个为该缓冲区的大小。
打开关闭文件
打开文件:
extern FILE *fopen(__const char *__restrict __filename, __const char *__restrict __modes)
r只读的方式打开(文本文件),rb只读方式打开二进制文件。
freopen()
fclose() 有一个作用就是,缓冲区中的相关内容回写到磁盘文件中
fflush()刷新缓冲区的内容,即使用I/O系统调用将缓冲区的内容写回到磁盘中。
读写文件流:
字符读写文件流:
fgetc(); 对于文件流
getc(); 对于标准输入 其为定义的宏:
fputc();
putc();
rewind(fp)将文件指针返回到文件的最开始处。