8月17日学习笔记

文件的输入与输出
所学函数:fseek(); ftell(); setvbuf(); ungetc(); fflush(); fread(); fwrite(); feof(); ferror();

随机存取:fseek()与ftell()
fseek(被搜索文件的FILE指针,偏移量(long类型),文件起始点模式);
文件起始点模式:
SEEK_SET 文件开始
SEEK_CUR 当前位置
SEEK_END 文件结尾

调用函数的例子

fseek(fp,0L,SEEK_SET);//找到文件的开始处
fseek(fp,10L,SEEK_SET);//找到文件的第10字节
fseek(fp,2L,SEEK_CUR);//文件当前位置向前移动2个字节
fseek(fp,0L,SEEK_END);//到达文件结尾处
fseek(fp,-10L,SEEK_END);//从文件结尾处退回10个字节

ftell(文件指针);返回文件的当前位置.(用于得到文件位置指针当前位置相对于文件首的偏移字节数)//只能读取较小的字节数(long类型)(该函数对大于231-1文件,即:2.1G以上的文件操作时可能出错。)

long a=ftell(fp);

int ungetc(int c,FILE *fp)函数将c指定的字符放回输入流中。

int fflush(FILE *fp);

int setvbuf(FILE *restrict fp, char *restrict buf, int mode, size_t size);
此函数建立一个标准I/O函数使用的替换缓冲区。
mode类型:
_IOFBF(完全缓冲,缓冲区满的时候刷新)
_IOLBF(行缓冲,缓冲区满的时候或者一个新行写入的时候刷新)
_IONBF(无缓冲)

fwrite()函数

size_t fwrite(const void *restrict ptr, size_t size, size_t nmemb, FILE *restrict fp);

fwrite(要写入数据块的地址,数据块大小,数据块数目,要写入的文件);

char buffer[256];
fwrite(buffer,sizeof(double),10,fp);//分10个数据块

fread()函数

size_t fread(void *restrict ptr,size_t size,size_t nmemb,FILE *restrict fp);

使用这一函数来读取通过fwrite()写入的文件数据。如:

double earning[10];
fread(earning.sizeof(double),10,fp);//将10个double复制到数组
int feof(FILE *fp);//检测文件尾,成功返回非0值
int ferror(FILE *fp);//发生读写错误返回非0值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值