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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值