改变缓冲方式、流错误函数、文件操纵函数

改变缓冲方式

只有当指定的流被打开但还没有在它上面执行任何其他操作前才能被调用。

void setbuf(FILE *stream, char *buf);
int setvbuf(FILE *stream, char *buf, int mode, size_t size);

setbuf设置另一个长度为BUFSIZ(stdio.h)的字符数组对流进行缓冲。如果用一个NULL参数调用,setbuf将关闭流的所有缓冲方式。

如果在流关闭之前,程序的执行离开了数组声明所在的代码块,流就会继续使用这块内存,但此时可能分配给其他程序使用。

setvbuf更为通用。mode用于指定缓类型。IOFBF指定一个完全缓冲的流,IONBF指定一个不缓冲的流,_IOLBF指定一个行缓冲流。行缓冲流就是每当一个换行符写入到缓冲区时,缓冲区便进行刷新。

buf和size指定使用的缓冲区。buf为NULL,size必须为0。最好用一个长度为BUFSIZ的字符数组作为缓冲区。

流错误函数

int feof(FILE *stream);
int ferror(FILE *stream);
void clearerr(FILE *stream);

如果流当前处于文件尾,feof返回真。这个状态可以通过对流执行fseek、rewind、fsetpos来清除。ferror报告流的错误状态,出现任何读写错误返回真。clearerr对指定流的错误标志进行重置。

FILE *tmpfile(void);

这个函数创建一个文件,当文件被关闭或程序终止时这个问价自动删除。该文件以wb+模式打开,可用于二进制和文本数据。

临时文件的名字可用tmpnam函数创建:

char *tmpnam(char *name);

文件操纵函数

int remove(char const *filename);
int rename(char const *oldname, char const *newname);

如果执行成功,返回零值,失败返回非零值。

remove删除一个指定文件。若文件处于打开状态,结果取决编译器。

rename修改一个文件的名字,如果函数失败,文件仍可用原名字。

posted @ 2018-04-05 17:33  刘-皇叔  阅读(108)  评论(0编辑  收藏  举报