/* 功能:设置文件偏移位置 参数1:FILE流 参数2:偏移量 参数3:偏移的位置:SEEK_SET, SEEK_CUR, SEEK_END 返回值:成功返回0,否则返回-1并设置errno*/ int fseek(FILE *stream, long offset, int whence); /* 功能:确定文件位置指针位置 参数1:FILE 流 返回值:文件位置指针的当前位置,否则返回-1,并设置errno*/ long ftell(FILE *stream); /* 功能:文件位置指针定义到文件开始位置 参数1:FILE流 返回值:无*/ void rewind(FILE *stream);
用fseek函数以及ftell函数实现确定文件大小的程序:
#include <stdio.h> #include <stdlib.h> int main(int argc , char **argv) { FILE *fp; if(argc < 2) { fprintf(stderr,"Usage....\n"); exit(1); } fp = fopen(argv[1],"r"); if(fp == NULL) { perror("fopen()"); exit(1); } fseek(fp,0,SEEK_END); printf("%ld\n",ftell(fp)); exit(0); }
使用fseek函数产生一个空洞文件
/* 功能:刷新一个流 参数1:FILE流,如果为NULL,刷新all流 返回值: 成功返回0,否则返回EOF,并设置errno */ int fflush(FILE *stream);
缓冲区作用:合并系统调用
行缓冲:换行时候刷新,满了时候刷,强制刷新(stdout)
全缓冲:满了时候刷,强制刷新(默认,除了stdout)
无缓冲:需要立即输出的内容(stderr)
设置缓冲模式:
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
时间: 2024-12-22 04:22:04