一.结构体
struct 结构名 struct 结构名 struct struct st1(嵌套)
{成员列表}; {成员}变量名,..; {成员)变量名,..; {};
struct 结构名 变量名1, struct st2
{..;struct st1 str1ins;..;};
1.初始化;2.结构体成员引用 strStu.iNum;3.结构体变量赋值st2ins1=st2ins2;
结构体数组struct student{}strStuArr[5]={,,,,};
结构体与指针:struct student *p;p=&Stu;
访问:(*p).iNum<=>p->iNum<=>Stu.iNum
枚举
enum 枚举名
{枚举值表};枚举值是常量,不是变量;枚举元素本身有序号从0开始;枚举元素不是常量或变量,输出时可用switch语句;
枚举类型可读性提高但是输入输出复杂,不常用。
二.文件(重难点)
FILE *fp;fp=fopen("file1.txt","r");fp=fopen("c:\\file2.txt","r");
文件打开方式:r-read w-write a-append b-binary
r 只读打开一个文本文件;w 只写打开或建立文本文件; a 追加打开文本文件并在文件末尾写;
rb 只读打开二进制文件;wb 只写打开或建立二进制文件;ab 追加打开二进制并在末尾写;
r+ 读写文本;w+读写打开或建立文本;a+ 读写文本允许读或追加;
rb+ 读写二进制;wb+ 读写打开或建立二进制;ab+ 读写二进制允许读或追加;
if((fp=fopen("file1.txt","r")==NULL){printf("\nerror on open file1.txt!");exit(0);}判断是否打开;
fclose(fp);正常返回0,否则返回EOF(-1);
文件读写:
字符读写:int fgetc(FILE *stream);读一个字符,转换为int返回;使用后内部位置指针后移一个字节;失败或到文件尾返回EOF
int fputc(int ch,FILE *stream);将ch对应字符写到文件,返回ch;写入后位置指针后移;失败返回EOF
字符串读写:char *fgets(char *string,int n,FILE *stream);从文件读n-1个字符存到string并加'\0'。
int fputs(char *string,FILE *stream);向文件写入string;
数据块读写:int fwrite(void *ptr,int size,int items,FILE *stream);把ptr的items个size字节数据写入文件,返回成功写出的个数items,写错误时小于items;
int fread(void *ptr,int size,int items,FILE *stream);从文件读items个size写到ptr指向的数组;返回读出的items,读入时遇到结束标志,小于items;
格式化读写:fscanf(文件指针,格式字符串,输入表列);fscanf(fp,"%d%f",i,f);
fprintf(文件指针,格式字符串,输入表列);
文件的随机读写:(文件定位)rewind(文件指针);把内部指针移到文件首;fseek(文件指针,位移量,起始点);位移量是移动字节数要求long型,用常量时加后缀L,
起始点:文件首-SEEK_SET-0 当前位置-SEEK_CUR-1 末尾-SEEK_END-2;
文件检测:ferror(fp);feof(fp)结束检测结束返回非0;clearerr(fp)清除文件错误标志。