char* fgets(char* buf, int n, FILE* fp): 1.成功返回buf,已到达文件尾或出错返回null;2.读取了n-1个字符(包括换行符)或在读取n-1个字符前读取到换行符或到达文件尾则停止读取;3.缓冲区自动在读取字符后面添加null字节;
char* gets(char* buf): 1.从标准输入读取;2.成功返回buf,已到达文件尾或出错返回null;3.不能指定缓冲区大小,不推荐使用;4.不将读取到换行符存入缓冲区;
int fputs(const char* str, FILE* fp): 1.成功返回非负值,失败返回EOF;2.尾端的null字节不会被写到流中;
int puts(const char* str): 1.输出到标准输出;2.尾端的null字节不会被写到流中;3.会自动在末尾添加换行符;
size_t fread(void* ptr, size_t size, size_t nobj, FILE* fp): 1.返回写入的对象数;2.如果返回值小于所要求的nobj则出错;3.只能用于读取同一系统(最好同一编译器编译)上程序已写的数据,否则可能因为对齐,大小端等问题出错;
size_t fwrite(const void* ptr, size_t size, size_t nobj, FILE* fp): 1.如果出错或达到文件尾,返回值可以小于nobj;
long ftell(FILE* fp): 1.返回但其文件位置,出错返回-1;
int fseek(FILE* fp, long offset, int whence): 1.对于文本文件,whence只能是SEEK_SET(文件起始位置),offset只能是0或ftell的返回值;2.成功返回0,出错返回-1;
void rewind(FILE* fp): 1.将流设置到文件的起始位置;
int fgetpos(FILE* fp, fpos_t* pos): 1.将当前文件位置保存在pos;2.成功返回0,否则返回非0;
int fsetpos(FILE* fp, const fpos_t* pos): 2.将当前文件位置设置为pos;2.成功返回0,否则返回非0;
void setbuf(FILE* fp, char* buf): 1.如果buf为NULL,流设置为不缓冲,否则buf必须指向长度至少为BUFSIZ的缓存区,流设置为全缓冲;2.必须在流打开后和执行任何一个其他操作之前调用;
int setvbuf(FILE* fp, cahr* buf, int mode, size_t size): 1.设置流的缓冲模式和缓冲大小等;2.必须在流打开后和执行任何一个其他操作之前调用;3.成功返回0,否则返回非0;
int fflush(FILE* fp): 1.使流所有未写的数据都被传送至内核;2.如果fp是NULL,则所有输出流都被冲洗;3.成功返回0,出错返回EOF;
FILE* fopen(const char* pathname, const char* type):
FILE* freopen(const char* pathname, const char* type, FILE* fp): 1.在指定的流上打开指定的文件,如果该流已经打开,则先关闭,如果流已经定向,则清除定向;2.一般用于将一个文件打开为一个预定义的流:标准输入,标准输出或标准错误;
FILE* fdopen(int fd, const char* type): 1.将文件描述符转化流;
type可以为以下值:
"r"或“rb”: 为读而打开
"w"或"wb": 为写而打开
"a"或"ab": 追加;为在文件尾写而打开,或为写而创建
"r+"或"r+b"或"rb+": 为读和写而打开,不截断文件
"w+"或"w+b"或"wb+": 为读和写而打开,把文件截断至0长
"a+"或"a+b"或"ab+": 为在文件尾读和写而打开或创建
当以读写打开文件时(type中有+),具有以下的限制:
1.如果中间没有fflush,fseek,fsetpos,rewind,则在输出的后面不能直接跟随输入
2.如果中间没有fseek,fsetpos,rewind,或者一个输入操作没有到达文件尾,则在输入操作之后不能直接跟随输出
int fclose(FILE* fp): 1.冲洗缓冲中的输出数据,丢弃缓冲区中的输入数据;2.即使调用失败,流也不再跟文件和缓冲区关联;3.成功返回0,出错返回EOF;
int feof(FILE*): 1.判断是否达到文件尾(并且尝试进行读操作等),条件为真返回非0,否则返回0;
int ferror(FILE*): 1.判断流是否出错,条件为真返回非0,否则返回0;
void clearerr(FILE*): 1.清除流的eof和error标志;
void perror(const char* str): 1.根据全局变量errno打印错误信息,如果str非null,在错误信息前加str的内容;
char* tmpnam(char* ptr): 1.产生一个跟现有文件名不同的一个有效路径名字符串;2.最多调用次数是TMP_MAX;3.如果ptr是NULL,路径名保存在静态区中(会被下次调用覆盖),如果不是NULL,ptr指向至少是L_tmpnam个字符的数组;3.失败返回NULL;
FILE* tmpfile(void): 1.创建一个临时的二进制文件(类型wb+);2.关闭该文件或程序结束自动删除文件,程序异常终止时是否删除文件取决于实现;3.失败返回NULL;