C语言学习之文件操作

FILE *fopen(const char *path, const char *mode);

功能:打开文件

path:文件的路径
mode:文件打开的方式,以字符串形式提供
      	"r"  以只读方式打开文件,如果文件不存在则打开失败,返回值为空。
      	"r+" 在"r"的基础上增加写权限。
       	"w" 以只写方式打开文件,如果文件不存在则创建,如果文件存在则把内容清空。
       	"w+" 在"w"的基础上增加读取权限。
       	"a" 以只写方式打开文件,如果文件不存在则创建,如果文件存在则把内容保留,与"w"区别是当有新数据写入,会追加到文件的末尾。
      	"a+" 在"a"的基础上增加读权限。 
返回值:是一个结构体指针,指向一个结构体对象,里面保存的是被打开文件相关信息(不要直接操作),它可以当作一个令牔,交给其它函数使用。

二进制文件与文本文件的区别:
二进制文件,把变量的补码直接写到文件中,看不懂。文本文件,把变量值转换成字符写入文件中,看的懂。文本文件存储的也是二进制,是ASCII码的二进制。

写入文本内容:

int fprintf(FILE *stream, const char *format, …);

功能:把数据以文本形式写入到文件中

stream:文件指针,fopen函数的返回值
format:格式化控制符,占位符等
...:要写入的变量。

返回值:成功写入的变量个数。

int fscanf(FILE *stream, const char *format, …);

       功能:从文件中读取数据到变量,要求文件的内容是字符。
       
       stream:文件指针,fopen函数的返回值
       format:格式化控制符,点位符等
       ...:变量的地址

       返回值:成功返回读入的参数的个数,失败返回-1。

写入二进制内容:

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

       功能:内存中的数据,以二进制形式写入到文件中。

       ptr:要写入的内存的首地址
       size:要写入的字节数
       nmemb:要写入的次数
       stream:文件指针,fopen函数的返回值
       
       返回值:成功写入的次数

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

       功能:从文件中以二进制方式读取数据到内存中。

       ptr:用来存放数据的内存首地址
       size:要读取的字节数
       nmemb:要读取的次数
       stream:文件指针,fopen函数的返回值

       返回值:成功读取的次数

文件结构体中有一个成员记录文件的读写位置,称它位文件位置指针,有些情况下需要调整它的位置,获取到正确的数据。

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

  功能:根据基础位置+偏移值调整文件指针的位置。

  stream:文件指针,fopen函数的返回值
  offset:可以为正负
  whence:
       SEEK_SET 文件头
       SEEK_CUR 当前位置
       SEEK_END 文件尾

long ftell(FILE *stream);

功能:返回文件位置指针所在的位置。

void rewind(FILE *stream);

功能:把文件位置指针调整到开头

猜你喜欢

转载自blog.csdn.net/weixin_43504629/article/details/89790767
今日推荐