文件的分类:
文本文件: 存储的是ASCII码值的二进制
二进制文件: 存储的是数据的补码
文件IO:
FILE *fopen(const char *path, const char *mode);
功能:打开或者创建文件
path:文件的路径
mode:打开模式r 以只读权限打开文件,如果该文件不存在则打开失败r+ 在r的基础上,增加写权限w 以只写权限打开文件,如果文件不存在则创建,如果文件存在则会清空w+ 在w的基础上,增加读权限a 以追加的形式打开文件,如果文件不存在则新建,如果文件存在则不清空,新写入的数据会在文件的文件。a+ 在a的基础上,增加读权限注意:以上方式打开文件都是以文本文件形式来操作文件的,在它们的基础加上b表示以二进制形式操作文件。rb wb wb+返回值:结构指针,不需要关心它的成员,只需要知道它是操作该文件的唯一凭证。二进制形式的读写:【人无法直接读懂文件】
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
功能:从内存中把数据写入到文件中
ptr:要写入的内存的首地址
size:一次写入的字节数
nmemb:写入多少次
FILE*:文件指针,fopen的返回值
返回值:成功写入的次数size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从文件中读取数据到内存中
ptr:要读取到内存的首地址
size:每次读取多少个字节
nmemb:读取多少次
FILE*:文件指针
返回值:成功读取到的次数文本形式的读写【人能直接看懂文件】
int fprintf(FILE *stream, const char *format, ...);
功能:以文本形式写入数据到文件中
stream:要写入的文件指针
format:占位符...
...:变量列表
返回值:int fscanf(FILE *stream, const char *format, ...);
功能:以文本形式从文件中读取数据到内存中
stream:要写入的文件指针
format:占位符...
...:变量列表的地址
返回值:成功读取到的变量的个数int fclose(FILE *fp);
功能:关闭文件(因为有缓冲区的存在,想要立即写入到文件,关闭一下文件)文件位置指针:每个打开的文件都会有一个文件位置指针指向要读写的位置,它会随着文件的读写而移动,以r、r+、w、w+模式打开文件,文件位置指针会在文件的开头,以a\a+打开,文件位置指针会在文件的末尾int fseek(FILE *stream, long offset, int whence);功能:设置文件的位置指针stream:要设置的文件指针offset:偏移值whence:基础位置SEEK_SET:文件的开头SEEK_CUR: 文件指针的当前位置SEEK_END: 文件的末尾返回值:成功返回0,失败返回-1void rewind(FILE *stream);功能:把文件位置指针设置到文件开头long ftell(FILE *stream);功能:获取文件位置指针当前所在的位置返回:所在第几个字节int feof(FILE *stream);功能:检查文件位置指针是否已经到达末尾返回值:如果到达末尾返回非零值char *fgets(char *s, int size, FILE *stream);功能:从文件中读取一行字符串int fputs(const char *s, FILE *stream);功能:写入一个字符串到文件中,会自动添加\n在末尾int fgetc(FILE *stream);功能:从文件中读取一个字符int fputc(int c, FILE *stream);功能:写入一个字符到文件中int remove(const char *pathname);功能:删除一个文件返回值:成功返回0,失败返回-1int rename(const char *oldpath, const char *newpath);功能:重命名文件返回值:成功返回0,失败返回-1main函数的参数:是为了获取命令行的参数 argc 代表了命令行参数的总个数argv 代表了每个参数字符串的首地址