ANSI C文件操作函数

1.打开文件:
extern FILE *fopen(__const char *__restrict __filename, __const *__restrict __modes);
如果执行成功,将返回打开文件的文件指针;如果执行失败,将返回NULL。

2.关闭文件:
extern int fclose(FILE *__stream);
如果执行成功,则返回0;否则返回EOF,并设置错误标识位error全局变量。

3.关闭当前进程打开的所有流对象:
extern int fcloseall(void);
如果执行成功,则返回0;否则返回EOF,并设置错误标识位error全局变量。

4.更新缓冲区内容:
extern int fflush(FILE *__stream);
如果执行成功,则返回0;否则返回EOF,并设置错误标识位error全局变量。

5.字符读写文件流:
(读取)
extern int fgetc(FILE * __stream);
extern int getc(FILE * __stream);//它是一个宏定义
成功则返回读取到的内容;失败则返回EOF(-1)
extern int getchar(void);//从标准输入流中读取一个字符
(写入)
extern int fputc(int __c, FILE *__stream);
extern int putc(int __c, FILE *__stream);
extern int putchar(int __c);//向标准输出中写入一个字符c
成功则返回写入到流中的内容;失败则返回EOF(-1)

6.行读写文件流:
(读取)
extern char * fgets(char *__restrict __s, int __n, FILE *__restrict __stream);
此函数从将字符从stream读入s所指向的内存单元,直到读取n-1个字符、换行符或遇到文件结束标志为止,字符串以空字符结束。
成功完成后,返回s,如果流位于文件末尾,则设置此流的文件结束指示器,并返回一个空指针;如果出现读取错误,则设置了流的错误指示符,并将errno设置为指示此错误,返回一个空指针。
(写入)
extern int puts(__const char *__s);
将s指向的以空字符结尾的字符写入标准输出流stdout中。并且后接换行符。
 extern int fputs(__const char *__restrict __s, FILE *__restrict __stream);
 将指定的s写入到指定输出的stream中,但不追加换行符。
 以上两个函数都不写入终止空字符。
 成功后返回非负数。否则返回EOF,并为流设置错误指示符,将errno设置为指示出错。

7.块读写文件流:
 (读取)
 extern size_t fread(void *__restrict__ptr, size_t __size, size_t __n, FILE *__restrict __stream);
此函数将从指定流中读取n个大小为size的对象。
 第一个参数为指向欲存放读取的对象空间指针,即读取的对象的存放位置;
 第二个参数为读取对象的大小
 第三个参数为读取对象的个数
 第四个对象为读取的流
 返回的是实际读取到的对象个数(不是读写的字节大小)。
注意:
fread返回的不是字节数,当且仅当下面这么用的时候,返回值才是字节数

char buff[size];
FILE *fp;
...
fread(buff, 1, size, fp);
...

 (写入)
extern size_t fwrite(__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s);
此函数将从指定流中写入n个大小为size的对象。
第一个参数为指向欲写入的对象空间指针,即要写入的对象的存放位置;
 第二个参数为写入对象的大小
 第三个参数为写入对象的个数
 第四个对象为写入的流
成功则返回的是实际写入到指定流的对象个数(不是写入的字节大小),否则返回-1

8.文件流检测:
 extern int feof(FILE *__stream);
如果读取到了文件结束,返回1,否则返回0;
 extern int ferror(FILE *__stream);
如果没有出现错误,返回0,否则表示出错。
 对于纯文本的ASCII文件,可以通过判断其ASCII码值是否==EOF(-1)来确定是否到了文件流的结束。

9.文件流定位:
 (1)返回当前读写位置:
 extern long int ftell(FILE *__stream);
 如果成功,将返回当前指针位置距离文件开始的字节数。失败则返回-1.

 (2)修改当前读写位置:
 extern int fseek(FILE * __stream, long int __off, int __whence);
第一个参数为操作的流对象
 第二个参数为针对第三个参数(修改基准)的偏移量
 第三个参数为修改位置的基准。其有3个:
  #define SEEK_SET 0
  #define SEEK_CUR 1
  #define SEEK_END 2
成功则返回0,否则返回-1

(3)重置当前读写位置:
extern void rewind(FILE * __stream);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值