从零开始的文件操作(标准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:格式化控制符,点位符等
…:变量的地址
返回值:成功读取到返回0,失败返回-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_45050225/article/details/98656553