1.打开文件:
extern FILE *fopen(__const char *__restrict __filename, __const *__restrict __modes);
如果执行成功,将返回打开文件的文件指针;如果执行失败,将返回NULL。
2.关闭文件:
extern int fclose(FILE *__stream);
如果执行成功,则返回0;否则返回EOF,并设置错误标识位error全局变量。
3.关闭当前进程打开的所有流对象:
extern int fcloseall(void);
如果执行成功,则返回0;否则返回EOF,并设置错误标识位error全局变量。
4.更新缓冲区内容:
extern int fflush(FILE *__stream);
如果执行成功,则返回0;否则返回EOF,并设置错误标识位error全局变量。
5.字符读写文件流:
(读取)
extern int fgetc(FILE * __stream);
extern int getc(FILE * __stream);//它是一个宏定义
成功则返回读取到的内容;失败则返回EOF(-1)
extern int getchar(void);//从标准输入流中读取一个字符
(写入)
extern int fputc(int __c, FILE *__stream);
extern int putc(int __c, FILE *__stream);
extern int putchar(int __c);//向标准输出中写入一个字符c
成功则返回写入到流中的内容;失败则返回EOF(-1)
6.行读写文件流:
(读取)
extern char * fgets(char *__restrict __s, int __n, FILE *__restrict __stream);
此函数从将字符从stream读入s所指向的内存单元,直到读取n-1个字符、换行符或遇到文件结束标志为止,字符串以空字符结束。
成功完成后,返回s,如果流位于文件末尾,则设置此流的文件结束指示器,并返回一个空指针;如果出现读取错误,则设置了流的错误指示符,并将errno设置为指示此错误,返回一个空指针。
(写入)
extern int puts(__const char *__s);
将s指向的以空字符结尾的字符写入标准输出流stdout中。并且后接换行符。
extern int fputs(__const char *__restrict __s, FILE *__restrict __stream);
将指定的s写入到指定输出的stream中,但不追加换行符。
以上两个函数都不写入终止空字符。
成功后返回非负数。否则返回EOF,并为流设置错误指示符,将errno设置为指示出错。
7.块读写文件流:
(读取)
extern size_t fread(void *__restrict__ptr, size_t __size, size_t __n, FILE *__restrict __stream);
此函数将从指定流中读取n个大小为size的对象。
第一个参数为指向欲存放读取的对象空间指针,即读取的对象的存放位置;
第二个参数为读取对象的大小
第三个参数为读取对象的个数
第四个对象为读取的流
返回的是实际读取到的对象个数(不是读写的字节大小)。
注意:
fread返回的不是字节数,当且仅当下面这么用的时候,返回值才是字节数
char buff[size];
FILE *fp;
...
fread(buff, 1, size, fp);
...
char buff[size];
FILE *fp;
...
fread(buff, 1, size, fp);
...
(写入)
extern size_t fwrite(__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s);
此函数将从指定流中写入n个大小为size的对象。
第一个参数为指向欲写入的对象空间指针,即要写入的对象的存放位置;
第二个参数为写入对象的大小
第三个参数为写入对象的个数
第四个对象为写入的流
成功则返回的是实际写入到指定流的对象个数(不是写入的字节大小),否则返回-1
8.文件流检测:
extern int feof(FILE *__stream);
如果读取到了文件结束,返回1,否则返回0;
extern int ferror(FILE *__stream);
如果没有出现错误,返回0,否则表示出错。
对于纯文本的ASCII文件,可以通过判断其ASCII码值是否==EOF(-1)来确定是否到了文件流的结束。
9.文件流定位:
(1)返回当前读写位置:
extern long int ftell(FILE *__stream);
如果成功,将返回当前指针位置距离文件开始的字节数。失败则返回-1.
(2)修改当前读写位置:
extern int fseek(FILE * __stream, long int __off, int __whence);
第一个参数为操作的流对象
第二个参数为针对第三个参数(修改基准)的偏移量
第三个参数为修改位置的基准。其有3个:
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
成功则返回0,否则返回-1
(3)重置当前读写位置:
extern void rewind(FILE * __stream);