错题:
- 预处理是在编译前由预编译器完成的,它不占用编译时间和运行时间。
- C语言的宏定义本质就是用一个不带引号的字符串替换宏名。
- 结构体类型及其变量的声明。
//声明结构体类型(stu)的同时声明结构体变量(stutype)
struct stu{
int a;
float b;
}stutype;
//先声明结构体类型,再定义结构体变量。
struct stu{
int a;
float b;
};
struct stu stutype;
//声明一个无名结构体类型,同时定义结构体变量。
struct {
int a;
float b;
}stutype;
//声明一个无名结构体类型,再定义结构体变量。
struct {
int a;
float b;
}stutype;
struct stutype;
- 对结构体成员变量的引用
struct pupil{
char name[20];
int age,sex;
}pup[5],*p=pup;
对成员变量的引用如果是非数组类的一定要带取地址符:
scanf("%s",&pup[0].age); scanf("%s",&(p->sex));
对成员变量的引用如果是数组类的则不需要带取地址符,因为数组名本身就是地址变量:
scanf("%s",pup[0].name);
- 若执行fopen函数时发生错误,则函数的返回值是0。
- 要求用fopen函数打开一个新的文件,说明磁盘上没有该文件,要生成一个,则用“w”模式,二进制文件要用"b"模式,能读能写要用“+”模式,组合起来就是“wb+”形式。
- “a”模式是指针移动到文件末尾并向文件进行添加操作,“+”模式表示文件能读能写。
“a+”表示文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,可作添加和读操作 - feek函数是对文件进行定位,可实现改变文件位置指针的操作,其形式是int fseek(FILE *fp,long offset,int origin); 当origin=0时,表示从文件开头计算;当origin=1时,表示从文件开头指针当前位置计算;当origin=2时,表示从文件末尾计算。offset若为正,则文件指针向后移动;offset若为负,则文件指针向前移动。
fseek(fp,-20L,2)
中origin=2时,表示从文件末尾计算,-20L表示文件指针从文件尾向前移动20个字节。 - fgetc函数用于从文件中读取一个字符,对应的文件打开模式可以是读(“r”),可以是读写(“r+”)、追加(“a”)。
- rewind函数的作用是使位置指针重新返回文件的开头。
- ftell(fp)函数的作用是得到流式文件中的当前位置。
- C语言流式文件的两种形式是文本文件和二进制文件。
- C语言中输出一个数据块到文件中的函数是fwrite,从文件中输入一个数据块的函数是fread,输出一个字符串到文件中的函数是fputs,从文件中输入一个字符串的函数是fgets。
- feof(fp)函数用来判断文件是否结束,若遇到文件结束,函数值为1,否则为0。
- 在C语言中,文件的存取是以字节为单位,这种文件称作流式文件。
- 结构数组的输入输出。
int main(){
struct man *p,*q;
int old=0;
p=person;
for(;p<person+3;p++)
if(old<p->age){
q=p;
old=p->age;
}
printf("%s %d",q->name,q->age);
return 0;
}
printf("%d, %d\n",(++p)->a,(p++)->a);
由于C语言中函数参数是从右向左结合的,因此先输出(p++)->a(值为3),然后p指向s[2],++p后p就指向s[3],因此++p->a的值为7。- 统计链表中的节点个数
struct link{
char data;
struct link *next;
};
struct link *p,*first;
int c=0;
p=first;
while(p){
c++;
p=p->next;
}