首页 > 其他分享 >c语言常见文件操作函数——文本流

c语言常见文件操作函数——文本流

时间:2022-09-27 14:56:53浏览次数:42  
标签:__ 文件 函数 int 常见 FILE 缓冲区 文本

一、文件的打开关闭

指向一个保存打开文件信息的结构体变量,该结构体类型为'FILE'。
在'stdio.h'中声明:

struct _iobuf {
    char *_ptr;
    int _cnt;
    char *_base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char *_tmpfname;
};
typedef struct _iobuf FILE;
FILE *fopen (const char *__restrict __filename, const char *__restrict __modes);
int fclose (FILE *__stream);
int fflush (FILE *__stream);
文件打开方式 含义 指定文件不存在
“r"(只读) 为了输入数据,打开一个文本文件 出错
"w"(只写) 为了输出数据,打开一个文本文件 建立一个新的文本文件
"a”(追加) 向文件文本尾添加数据 出错
"rb"(只读) 为了输入数据,打开一个二进制文件 出错
"wb"(只写) 为了输出数据,打开一个二进制文件 建立一个新的二进制文件
"ab"(追加) 向二进制文件尾添加数据 出错

二、文件的顺序读写。

功能 函数名 适用范围
字符输入函数 fgetc 所有输入流
字符输出函数 fputc 所有输出流
文本行输入函数 fgets 所有输入流
文本行输出函数 fputs 所有输出流
格式化输入函数 fscanf 所有输入流
格式化输出函数 fprintf 所有输出流
二进制输入函数 fread 文件
二进制输出函数 fwrite 文件

三、文件的随机读写

1、fseek函数
根据文件指针位置和偏移量来定位文件指针

int fseek(FILE* stream,long int offset,int origin);

2、ftell函数
计算文件指针相对于起始位置的偏移量

long int ftell(FILE* stream);

3、rewind函数
让文件指针的位置回到文件的起始位置

void rewind(FILE* stream);

四、文件读取结束的判断

  • feof()用来判断文件内部指针是否指向文件末尾,当指向文件末尾时返回非零值,否则返回零值。
  • ferror()函数用来判断文件操作是否出错,出错时返回非零值,否则返回零值。
    注:在文件读取过程中,不能使用feof()函数的返回值来直接判断文件是否结束。而是应用于当文件读取结束时,判断是读取失败结束,还是遇到文件尾结束。

1、文本文件读取是否结束,判断返回值是否为EOF(fgetc)、NULL(fgets)

例如:

  • fgetc判断是否为EOF
  • fgets判断返回值是否为NULL.
    2、二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。

例如:

  • fread判断返回值是否小于实际要读的个数.

五、文件缓冲区

从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后再一起送到磁盘上。如果从磁盘像计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序缓冲区。

因为有缓冲区的存在,C语言在操作文件的时候,需要用fflush函数刷新缓冲区或者在文件操作结束的时候关闭文件。

标签:__,文件,函数,int,常见,FILE,缓冲区,文本
From: https://www.cnblogs.com/saury-2022/p/16734550.html

相关文章