C++基础知识以及结构、文件(5)
结构
定义
struct 结构名{
成员类型名 成员变量名;
成员类型名 成员变量名;
成员类型名 成员变量名;
……
};
结构名可以作为数据类型名使用。定义了一个结构,即定义了一种新的数据类型。
结构定义一定要以分号结束。
通过struct关键字定义出来的数据类型,一般统称为“结构类型”。由其定义的变量,统称为“结构变量”。
结构变量的定义
结构名 变量名;
一个结构变量所占的内存空间的大小,就是结构中所有成员变量大小之和。
访问结构变量的成员变量
结构变量名 成员变量名
一个结构变量的成员变量,可以完全和一个普通变量一样来使用,也可以取得其地址。
结构变量的初始化
定义时初始化。例:student stu={1234,“Tom”,3.78,{1984.12.28}};
结构数组
结构名 数组名【元素个数】;
指向结构变量的指针
结构名 * 指针变量名;
通过指针,访问其指向的结构变量:
1)指针->成员变量名
2)( * 指针).成员变量名
动态分配结构变量和结构数组
结构变量和结构数组都可以动态分配存储空间。
文件读写
用fopen打开文件
原型: FILE * fopen(const char * filename,const char * mode);
“FILE”是在stdio.h中定义的一个结构,用于存放和文件有关的信息(具体内容不需要知道)。第一个参数是文件名,第二个参数是打开文件的模式。
打开文件的模式
“r” :以文本方式打开文件,只进行读操作。
“w”: 以文本方式打开文件,只进行写操作。
“a”: 以文本方式打开文件,只往其末尾添加内容。
“rb” :以二进制方式打开文件,只进行读操作。
“wb”: 以二进制方式打开文件,只进行写操作。
“ab”: 以二进制方式打开文件,只往其末尾添加内容。
“r+” :以文本方式打开文件,既读取其数据,也要往文件中写入数据。
“r+b”:以二进制方式打开文件,既读取其数据,也要往文件中写入数据。
fopen函数返回一个FILE * 类型的指针,成为文件指针。
用fclose关闭文件
原型: int fclose(FILE * stream);
stream是之前用fopen打开文件时得到的文件指针。
用fscanf读文件
原型: int fscanf(FILE * stream,const char * format【,address,……】);
用fgetc读文件,用fputc写文件
原型: int fgetc(FILE * stream);
int fputc(int c,FILE * stream);
用fgets函数读文件,fputs函数写文件
原型: char * fgets(char * s,int n,FILE * stream);
int fputs(const char * s,FILE * stream);
用fread读文件,fwrite写文件
原型: unsigned fread(void *ptr,unsigned size,unsigned n,FILE * stream);
unsigned fwrite(const void * ptr,unsigned size,unsigned n,FILE * stream);
用 fseek改变文件当前位置
读写文件可以从文件的任意位置开始。
文件开头的“当前位置”值是0,而不是1。
原型: int fseek(FILE * stream,long offset,int whence);
whence可以有以下三种取值,这三种取值都是在stdio.h里定义的标识符:
SEEK_SET: 代表文件开头。
SEEK_CUR: 代表执行本函数前文件的当前。
位置 SEEK_END: 代表文件结尾处。