文件类型
从编程角度我们把文件分为两大类,分别是文本文件、二进制文件。
二进制文件:存储的是数据的补码,无法用直接打开,好处是读取文件后就可以直接使用。
文本文件:把数据以字符形式存储到文件中,可以被直接打开,检查数据是否正确,但读写都需要进行数据转换。
打开文件
//功能:打开、创建文件
//path:文件的路径
//mode:打开文件模式
//返回值:是一个FILE结构指针,如果文件打开失败,返回NULL
FILE *fopen(const char*path, const char* mode);
“r” 以只读方式打开文件,如果文件不存在则打开失败。
“r+” 在r的基础上增加写权限。
“w” 以只写方式打开文件,如果文件不存在则创建,如果文件存在则清空文件。
“w+” 在w的基础上增加读写权限。
“a” 以只写方式打开文件,文件不存在则创建,如果文件存在则新写入的内容添加到文件末尾。
“a+” 在a的基础上增加读权限。
FILE结构中记录的是被打开文件的相关数据,它是接下来读写和操作文件的凭证。
注意:如果文件本身没有相关权限则会打开失败!可以通过ls -l filename查看一下文件权限 r读 w写 x执行
关闭文件
int fclose(FILE *stream);
文本文件的写入
//功能:以文本格式写入数据到文件。
//stream:要写入的文件,fopen的返回值。
//format:占位符。
//... 要写入的变量
//return:写入的字节数
int fprintf(FILE* stream, const char* format, ...);
文本文件的读取
//功能:从文本文件中读取各类型的数据。
//stream:要读取的文件,fopen的返回值。
//format:占位符。
//... 要读入的变量
//return:读取的字节数
int fscanf(FILE* stream, const char* format, ...);
二进制文件的写入
//功能:把内存的数据拷贝到文件中
//ptr:要写入数据的内存首地址
//size:数据的单个元素字节数
//nmemb:元素的个数
//stream:文件指针
//返回值:成功写入元素的个数,正常情况下应该为nmemb
size_t fwrite(const void *ptr, size_t size, size_t nmemb,ILE *stream);
二进制文件的写入
//功能:从文件拷贝数据到内存
//ptr:存储数据的内存首指针
//size:数据的单个元素字节数
//nmemb:要读取的元素个数
//stream:文件指针
//返回值:成功读取元素的个数
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
随机读取
每个打开的文件都有一个指针记录着该文件读写到哪里了,该指针被称为文件的位置指针,位置指针会随着文件的读写自动移动。
“r”, "r+"打开的文件位置指针指向文件的开头
“a”, "a+"打开的文件位置指针指向文件的末尾
//功能:设置文件的位置指针
//stream:要设置的文件
//offset:偏移值
//whence:基础位置
//返回值:成功返回0,失败返回-1
int fseek(FILE *stream, long offset, int whence);
//功能:把文件的位置指针调整到开头
void rewind(FILE *stream);
//功能:获取文件位置指针所指向的字节数
long ftell(FILE *stream);
版权声明:本文为Makina原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。