对《Unix/Linux系统编程》关于IO库函数的整理
涉及了
fseek ftell rewind
feof ferr fileno
fdopen
freopen
popen
setvbuf fflush setbuf
1. I/O库函数
1.1 文件读写指针
1.1.1 fseek函数
与lseek
系统调用对应,移动文件读写指针
int fseek(FILE *stream, long off, int whence)
- stream – 文件流
- offset – 这是相对 whence 的偏移量,以字节为单位。正数向文件尾,负数向文件头
- whence – 偏移的起始位置:
SEEK_SET
文件开头、SEEK_CUR
当前位置、SEEK_END
文件末尾
1.1.2 ftell函数
返回给文件流的读写指针当前位置相对于文件首的偏移字节数
long ftell(FILE * stream)
1.1.3 rewind函数
将文件流读写指针重置为文件开头处
void rewind(FILE * stream)
1.2 测试文件流状态
IO库函数返回EOF时可能表示到达文件结尾或者文件出错,可以通过feof和ferror函数区别到底是到达文件尾还是出错
1.2.1 feof函数
feof() 函数用来判断文件内部指针是否指向了文件末尾。当指向末尾时返回非零值,否则返回0
int feof(FILE * stream)
1.2.2 ferror函数
ferror()函数用来判断文件操作是否出错。出错时返回非零值,否则返回0
int ferror(FILE * stream)