文件流读写

一、字符读写文件流
字符读操作
extern int fgetc(FILE *stream);//从流中读取一个字符
extern int getc(FILE *stream);
extern int getchar(void);//从标准输入设备,度一个字符
    若调用成功返回读到的内容,如果失败则返回EOF(-1)
getc()这个宏不是建立在fgetc的基础上的,所以getc一定比fgetc的速度快,而且速度应用并不是两者使用的主要问题,而是参数传递

字符写操作
extern int fputc(int c,FILE *stream);//将字符C写入到流stream中
extern int putc(int c,FILE *stream);
extern int putchar(int c);//写字符C到标准输出设备
若调用成功返回内容,如果失败则返回EOF(-1)



二、行读写文件流
行读出操作
extern char *fgets(char *s,int n,FILE *stream)
    此函数将字符从stream读入s指向的数组,直到读取n-1字符、换行符或遇到文件结束标志为止
extern char *gets(char *s)//从标准设备输入读取数据
    此函数将字符从标准输入流stdin读入s所指向的数组,直到遇到换行符或文件结束标志为止。此函数尽量不要使用,因其对输出量没有限制

    成功完成后fgets()和gets()都返回s,如果流位于文件末尾,则设置此流的文件结束指示器,并返回一个空指针。如果出现读取错误,则设置了流的错误指示符,并将error设置为指示此错误

行写入操作
extern char *fputs(char *s,FILE *stream)
extern char *puts(const char *s)
成功完成后,函数均返回非负数。否则返回EOF,并为流设置错误提示符,将error设置为指示错误



三、块读写文件流
块读写文件流是指每次读出和写入的数据量可以由自己设定
块读出操作
extern size_t fread(void *ptr,sieze_t_size,size_t_n,FILE *stream)
    此函数将从标准流中读取n个大小为size的对象。第一个参数为指向欲存放读取的对象空间指针,即读取的对象的存放位置;第二个参数为读取对象的大小,例如读出一个结构体buf,此参数可以设置为sizeof(struct buf);第三个参数为读取对象的个数;第四个参数为读取的流
    此函数返回实际读取到的对象个数,如果此值比参数n小,则代表可能读到了文件袋尾部或者出错,这时必须用feof()或者ferror()来检测发生了什么

块写入操作
extern size_t fwrite(void *ptr,sieze_t_size,size_t_n,FILE *stream)
    此函数将从标准流中写入n个大小为size的对象。第一个参数为指向欲存放写入的对象的数据空间指针,即写入的对象的存放位置;第二个参数为写入对象的大小,例如读出一个结构体buf,此参数可以设置为sizeof(struct buf);第三个参数为写入对象的个数;第四个参数为写入的流
    如果执行成功,此函数返回实际写入的对象个数,否则返回-1。

文件流定位
一、返回当前读写位置
extern long int ftell(FILE *stream);
如果执行成功,将返回指针当前指针位置,否则返回-1

二、修改当前读写位置
extern int fseek(FILE *stream,long int,int whence);
第二个参数为针对第三个参数(修改基准)的偏移量,第三个参数为修改位置的基准
#define SEEK_SET 0           //文件开始位置
#define SEEK_CUR 0           //当前位置
#define SEEK_END 0           //文件结束位置

三、重置当前读写位置
extern void rewind(FILE *stream)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值