为啥我的vc++老是报&符的错误啊?

 

把代码用代码段格式复制出来

#include<stdio.h>
#include<stdlib.h>
#include<string.h>    
 
#define OK  1
#define ERROR 0
#define OVERFLOW -2
		       
#define LIST_INIT_SIZE 100                         //线性表存储空间的初始分配量
#define LISTINCREMENT 10                 		 //线性表存储空间的分配量增量

typedef int Status;

typedef struct{
	char name[15];					//名字
	int No; 						//学号 
	int Room;						//宿舍号 
}Student;

Student student;

typedef struct{
	int length;       						//长度
	int listsize;     						//占用内存空间
	Student *elem;         					//引用对象Student的数据成员elem
}Linklist;

int flag=0;

Status init(Linklist &L);					//初始化线性表 
Status create(Linklist &L);					//创建线性表 
//冒泡排序 
Status MSortRoom(Linklist &L);				//按宿舍号排序 
Status MSortNo(Linklist &L);				//按学号排序 
Status MSortName(Linklist & L);				//按姓名排序 
//选择排序 
Status XSortRoom(Linklist &L);				//按宿舍号排序 
Status XSortNo(Linklist &L);				//按学号排序 
Status XSortName(Linklist & L);				//按姓名排序 
//直接插入排序 
Status CSortRoom(Linklist &L);				//按宿舍号排序 
Status CSortNo(Linklist &L);				//按学号排序 
Status CSortName(Linklist &L);				//按姓名排序 

Status SearchRoom(Linklist &L);			     //按宿舍号查找 
Status SearchNo(Linklist &L);				//按学号查找 
Status SearchName(Linklist &L)	;			//按名字查找 

Status Judge1(char ch);						//判断学生存在时是否继续 
Status Judge2(char ch);						//判断学生不存在是是否继续 
Status Judge3();							//判断是否有学生记录 
Status JudgeNO(int NO,Linklist L);          //判断学号是否重复 

void input(Linklist L);						//输入学生信息 
void PrintSort(Linklist &L);				//输出排序后的信息 
void PrintSearch(Linklist &L,int mid);		//输出查找的信息 (按学号和姓名) 
void PrintSearch1(Linklist &L,int mid);		//输出查找的信息(按房号) 

Status DeleteNO(Linklist &L);				//按学号删除某同学的信息 	
Status DeleteName(Linklist &L);				//按姓名删除某同学的信息 
Status DeleteRoom(Linklist &L);				//按宿舍号删除某同学的信息 

Status insert(Linklist &L);					//插入某同学的信息 

void JudgeSave(Linklist &L,int i);			//文件存储 
void Save(Linklist &L);
void Load(Linklist &L);						//文件加载 

Status ReturnMenu();						//返回菜单页面 

//----------------------------------------------------------------菜单操作-------------------------------------------------------
void menu()
{
	printf("\t\t             ========================        \n");
	printf("\t\t            |                       |        \n");
	printf("\t\t   |--------|     宿舍管理查询      |-------|\n");
	printf("\t\t   |        |                       |       |\n");
	printf("\t\t   |         ========================       |\n");
	printf("\t\t   |                                        |\n");
	printf("\t\t   |            请选择你的操作 :           |\n");
	printf("\t\t   |            [1]创建学生信息             |\n");
	printf("\t\t   |            [2]按姓名排序(插入排序)     |\n");
	printf("\t\t   |            [3]按学号排序(插入排序)     |\n");
	printf("\t\t   |            [4]按房号排序(插入排序)     |\n");
	printf("\t\t   |            [5]按姓名排序(选择排序)     |\n");
	printf("\t\t   |            [6]按学号排序(选择排序)     |\n");
	printf("\t\t   |            [7]按房号排序(选择排序)     |\n");
	printf("\t\t   |            [8]按姓名排序(冒泡排序)     |\n");
	printf("\t\t   |            [9]按学号排序(冒泡排序)     |\n");
	printf("\t\t   |            [10]按房号排序(冒泡排序)    |\n");
	printf("\t\t   |            [11]按姓名查找              |\n");
	printf("\t\t   |            [12]按学号查找              |\n");
	printf("\t\t   |            [13]按房号查找              |\n");
	printf("\t\t   |            [14]插入学生信息            |\n");
	printf("\t\t   |            [15]按学号删除学生信息      |\n");
	printf("\t\t   |            [16]按姓名删除学生信息      |\n");
	printf("\t\t   |            [17]按宿舍删除学生信息      |\n");
	printf("\t\t   |            [18]显示学生记录            |\n");
	printf("\t\t   |            [19]文件加载                |\n");
	printf("\t\t   |            [20]文件保存                |\n");
	printf("\t\t   |            [21]退出操作                |\n");
	printf("\t\t   |-======================================-|\n");
	printf("\t\t   |                 欢迎查询               |\n");
	printf("\t\t   |-======================================-|\n");
	printf("请选择你要进行的操作(1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21):\n");
}

int main(int argc,char **argv)
{
	int n; 
	Linklist L;             
	init(L);
	             
	char ch;
	printf("\t\t欢迎进入宿舍管理查询界面\n\n\n");
	printf("请按任意键进行操作");
	scanf("%c",&ch);
	system("cls");
	
	while(1)
	{   
		menu();
		scanf("%d",&n);
		getchar();
		system("cls");  
		switch(n)  
		{
			case 1:
				if(create(L)){
					printf("创建成功!\n");
				}
				ReturnMenu();
				break;
			case 2:
				CSortName(L);       
				if(L.length==0)      
				{       
					printf("\n已无学生记录\n");                 
				}        
				else{
					printf("按姓名排序:\n");    
					PrintSort(L);
				} 
				ReturnMenu();   
				break;
			case 3:
				CSortNo(L);       
				if(L.length==0)      
				{       
					printf("\n已无学生记录\n");                 
				}        
				else{
					printf("按学号排序:\n");    
					PrintSort(L);
				} 
				ReturnMenu();   
				break;
			case 4:
				CSortRoom(L);       
				if(L.length==0)      
				{       
					printf("\n已无学生记录\n");                 
				}        
				else{
					printf("按房号排序:\n");    
					PrintSort(L);
				} 
				ReturnMenu();   
				break;     
			case 5:
				XSortName(L);                     
				printf("\n");       
				if(L.length==0){
					printf("已无学生记录\n");     
					printf("\n");        
					ReturnMenu();        
				}        
				else{    
					printf("按姓名排序:\n");    
					PrintSort(L);    
					ReturnMenu();         
				}
				break; 
			case 6:
				XSortNo(L);                     
				printf("\n");       
				if(L.length==0){
					printf("已无学生记录\n");     
					printf("\n");        
					ReturnMenu();        
				}        
				else{    
					printf("按学号排序:\n");    
					PrintSort(L);    
					ReturnMenu();         
				}
				break;
			case 7:
				XSortRoom(L);                     
				printf("\n");       
				if(L.length==0){
					printf("已无学生记录\n");     
					printf("\n");        
					ReturnMenu();        
				}        
				else{    
					printf("按房号排序:\n");    
					PrintSort(L);    
					ReturnMenu();         
				}
				break;
			case 8:
				MSortName(L);                    
				printf("\n");     
				if(L.length==0){      
					printf("已无学生记录\n");            
					ReturnMenu();      
				}
				else{
					printf("按姓名排序:\n");  
					PrintSort(L);  
					ReturnMenu();    
				}
				break;
			case 9:
				MSortNo(L);                    
				printf("\n");     
				if(L.length==0){      
					printf("已无学生记录\n");            
					ReturnMenu();      
				}
				else{
					printf("按学号排序:\n");  
					PrintSort(L);  
					ReturnMenu();    
				}
				break;
			        
			case 10:
				MSortRoom(L);                    
				printf("\n");     
				if(L.length==0){      
					printf("已无学生记录\n");            
					ReturnMenu();      
				}
				else{
					printf("按房号排序:\n");  
					PrintSort(L);  
					ReturnMenu();    
				}
				break;  
			case 11:
				CSortName(L);             
				SearchName(L);              
				break;
			case 12:
				XSortNo(L);               
				SearchNo(L);                
				break;
			case 13:
				MSortRoom(L);                
				SearchRoom(L);         
				break;
			case 14:
				insert(L);          
				system("cls");  
				printf("显示插入后的学生信息:\n");
				PrintSort(L);  
				ReturnMenu();     
				break;
			case 15:
				DeleteNO(L);
				if(L.length==0){   
					printf("\n学生记录已被删除完\n\n");        
				}  
				else{  
					printf("删除后的学生信息:\n");
					PrintSort(L);      
				}
				ReturnMenu();     
				break;
			case 16:
				DeleteName(L);
				if(L.length==0){   
					printf("\n学生记录已被删除完\n\n");         
				}  
				else{  
					printf("删除后的学生信息:\n");
					PrintSort(L);     
				}    
				ReturnMenu(); 
				break;
			case 17:
				DeleteRoom(L);
				if(L.length==0){   
					printf("\n该房间没有学生\n\n");         
				}  
				else{  
					printf("删除后的学生信息:\n");
					PrintSort(L);     
				}    
				ReturnMenu(); 
				break;
			case 18:
				printf("\n学生信息为:\n");
				PrintSort(L); 
				ReturnMenu();        
				break;
			case 19:
			    Load(L);
			    ReturnMenu();
				break;
			case 20:
				JudgeSave(L,flag);
				ReturnMenu();
				break; 
			case 21:
				exit(0);
				break;
			default:
				printf("无此操作\n");
				ReturnMenu();
		}
	}
	return 0;
}

//-----------------------------------------------------------------------返回主界面----------------------------------------------------------------

Status ReturnMenu()					
{
	char c;
	fflush(stdin);
	printf("\n按任意键进入主界面:");
	scanf("%c",&c);
	system("cls");
	return OK;
}

//---------------------------------------------------------------线性表初始化---------------------------------------------------

Status init(Linklist &L)
{
	L.elem=(Student*)malloc(LIST_INIT_SIZE*sizeof(Student));
	if(!L.elem)
		exit(OVERFLOW);
	L.length=0;
	L.listsize=LIST_INIT_SIZE;
	return OK;
}


//-------------------------------------------------------------创建学生类信息表--------------------------------------------------

Status create(Linklist &L)
{
	if(L.length>=L.listsize)
	{
		Student *newbase;
		newbase=(Student*)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(Student));
		L.elem=newbase;
		L.listsize+=LISTINCREMENT;
	}
	char ch='Y';
	int i=0;
	int room[1000]={0};
	while(ch=='Y'){
		printf("请输入第%d个学生信息\n",i+1);
		input(L);
		if(room[student.Room]+1>6){
			printf("该宿舍已满员!请重新输入:\n");
			input(L); 
		}
		strcpy(L.elem[L.length].name,student.name);
		L.elem[L.length].No=student.No;
		L.elem[L.length].Room=student.Room;
		L.length++;
		i++;
		room[student.Room]++;
		ch=getchar();
		printf("\n是否继续添加学生:是的话按Y,否则按任意键返回:");
		scanf("%c",&ch);
		flag=1;
	}
	if(ch!='Y')
		system("cls");
	return OK;
}

//--------------------------------------------------------------按照宿舍号排序(冒泡排序)--------------------------------------------------------
Status MSortRoom(Linklist & L)		
{
	int i,j;
	Student temp;
	for(i=0;i<L.length-1;i++)
	for(j=i+1;j<L.length;j++)
	if(L.elem[i].Room>L.elem[j].Room)
	{
		temp=L.elem[i];
		L.elem[i]=L.elem[j];
		L.elem[j]=temp;
	}
	return OK;
}
//-------------------------------------------------------------------按照宿舍号排序(选择排序)-------------------------------------------------------------

Status XSortRoom(Linklist & L)		
{
	int i,j,k;
	Student temp;
	for(i=0;i<L.length-1;i++){
		k=i;
		for(j=i+1;j<L.length;++j)
			if(L.elem[k].Room>L.elem[j].Room)
				k=j;
		if(i!=k){
			temp=L.elem[i];
			L.elem[i]=L.elem[k];
			L.elem[k]=temp;
		}
	}
	
	return OK;
}


//--------------------------------------------------------------------------按照宿舍排序(插入排序)--------------------------------------------------------------
Status CSortRoom(Linklist &L)	
{
	int i,j;
	Student temp;
	for(i=1;i<L.length;++i){
		if(L.elem[i].Room<L.elem[i-1].Room){
			temp=L.elem[i];
			for(j=i-1;temp.Room<L.elem[j].Room;--j)
				L.elem[j+1]=L.elem[j];
			L.elem[j+1]=temp;
		}
	}
	return OK;
}


//--------------------------------------------------------------按照学号排序(冒泡排序)--------------------------------------------------------
Status MSortNo(Linklist & L)		
{
	int i,j;
	Student temp;
	for(i=0;i<L.length-1;i++)
	for(j=i+1;j<L.length;j++)
	if(L.elem[i].No>L.elem[j].No)
	{
		temp=L.elem[i];
		L.elem[i]=L.elem[j];
		L.elem[j]=temp;
	}
	return OK;
}


//-------------------------------------------------------------------按照学号排序(选择排序)-------------------------------------------------------------

Status XSortNo(Linklist & L)		
{
	int i,j,k;
	Student temp;
	for(i=0;i<L.length-1;i++){
		k=i;
		for(j=i+1;j<L.length;++j)
			if(L.elem[k].No>L.elem[j].No)
				k=j;
		if(i!=k){
			temp=L.elem[i];
			L.elem[i]=L.elem[k];
			L.elem[k]=temp;
		}
	}
	
	return OK;
}

//--------------------------------------------------------------------------按照学号排序(插入排序)--------------------------------------------------------------
Status CSortNo(Linklist &L)	
{
	int i,j;
	Student temp;
	for(i=1;i<L.length;++i){
		if(L.elem[i].No<L.elem[i-1].No){
			temp=L.elem[i];
			for(j=i-1;temp.No<L.elem[j].No;--j)
				L.elem[j+1]=L.elem[j];
			L.elem[j+1]=temp;
		}
	}
	return OK;
}



//--------------------------------------------------------------按照姓名排序(冒泡排序)--------------------------------------------------------
Status MSortName(Linklist & L)		
{
	int i,j;
	Student temp;
	for(i=0;i<L.length-1;i++)
	for(j=i+1;j<L.length;j++)
	if(strcmp(L.elem[i].name,L.elem[j].name)>0)
	{
		temp=L.elem[i];
		L.elem[i]=L.elem[j];
		L.elem[j]=temp;
	}
	return OK;
}


//-------------------------------------------------------------------按照姓名排序(选择排序)-------------------------------------------------------------

Status XSortName(Linklist & L)		
{
	int i,j,k;
	Student temp;
	for(i=0;i<L.length-1;i++){
		k=i;
		for(j=i+1;j<L.length;++j)
			if(strcmp(L.elem[k].name,L.elem[j].name)>0)
				k=j;
		if(i!=k){
			temp=L.elem[i];
			L.elem[i]=L.elem[k];
			L.elem[k]=temp;
		}
	}
	
	return OK;
}

//--------------------------------------------------------------------------按照姓名排序(插入排序)--------------------------------------------------------------
Status CSortName(Linklist &L)	
{
	int i,j;
	Student temp;
	for(i=1;i<L.length;++i){
		if(strcmp(L.elem[i].name,L.elem[i-1].name)<0){
			temp=L.elem[i];
			for(j=i-1;strcmp(temp.name,L.elem[j].name)<0;--j)
				L.elem[j+1]=L.elem[j];
			L.elem[j+1]=temp;
		}
	}
	return OK;
}

//-------------------------------------------------------------------------按房号查找(折半查找)----------------------------------------------------------

Status SearchRoom(Linklist &L)
{
	if(L.length==0)
		Judge3();
	else
	{
		int low=0,high=L.length,m,temp;
		int r;
		printf("\n按房号查找   输入房号:");
		scanf("%d",&r);
		printf("\n查找成功   学生信息为\n");
		printf("\t\t姓名                        学号       房号\n");
		while(low<=high)
		{
			m=(low+high)/2;
			if(r==L.elem[m].Room)
			{
				temp=1;
				PrintSearch1(L,m);
				for(int k=m;k>low;k--){
					if(L.elem[k].Room==L.elem[k-1].Room)
						PrintSearch1(L,k-1);
				}
				for(int k=m;k<high;++k){
					if(L.elem[k].Room==L.elem[k+1].Room){
						PrintSearch1(L,k+1);
					}
				}
				break;
			}
			else if(r>L.elem[m].Room)
				low=m+1;
			else
				high=m-1;
		}
		if(temp==1)
		{
			
			if(Judge1(1)) 
				SearchRoom(L);
			else
			{
				system("cls");
			}
		}
		else
		{
			if(Judge2(1))
				SearchRoom(L);
			else
			{
				system("cls");
			}
		}
	}
	return OK;
}

//-------------------------------------------------------------------------按学号查找(折半查找)--------------------------------------------------------
Status SearchNo(Linklist &L)
{
	if(L.length==0)
	{
		Judge3();
	}
	else
	{
		int low=0,high=L.length,m,temp=0;					
		int n;
		printf("\n按学号查找   输入学号:");
		scanf("%d",&n);
		while(low<=high)
		{
			m=(low+high)/2;
			if(n==L.elem[m].No)
			{
				temp=1;
				break;
			}
			else if(n>L.elem[m].No)
				low=m+1;
			else
				high=m-1;
		}
		if(temp==1)
		{
			PrintSearch(L,m);
			if(Judge1(1))
				SearchNo(L);
			else
			{
				system("cls");
			}
		}
		else
		{
			if(Judge2(1))
				SearchNo(L);
			else
			{
				system("cls");
			}	
		}	
	}
	return OK;
}

//-------------------------------------------------------------------------按姓名查找(折半查找)----------------------------------------------------------
Status SearchName(Linklist &L)		
{
	if(L.length==0)
		Judge3();
	else
	{
		int low=0,high=L.length,m,temp=0; 
		printf("\n按姓名查找   输入姓名:");
		char a[15];
		scanf("%s",a);
		while(low<=high)
		{
			m=(low+high)/2;
			if(strcmp(a,L.elem[m].name)==0)
			{
				temp=1;
				break;
			}
			else if(strcmp(a,L.elem[m].name)>0)
				low=m+1;
			else
				high=m-1;
		}
		if(temp==1)
		{
			PrintSearch(L,m);
			if(Judge1(1))
				SearchName(L);
			else
			{
				system("cls");
			}
		}
		else
		{
			if(Judge2(1))
				SearchName(L);
			else
			{
				system("cls");
			}
		}
	}
	return OK;
}


//------------------------------------------------------------------------判断是否继续查找---------------------------------------------------------
Status Judge1(char ch)			
{
	scanf("%c",&ch);
	printf("是否继续:是的话按Y,否则按任意键返回:");
	scanf("%c",&ch);
	if(ch=='Y')
	{
		system("cls");
		return OK;
	}
	else
		return ERROR;
}

//-----------------------------------------------------------------------判断不存在是否继续查找--------------------------------------------------------

Status Judge2(char ch)
{
	scanf("%c",&ch);
	printf("没有此学生,是否继续:是的话按Y,否则按任意键返回");
	fflush(stdin);
	scanf("%c",&ch);
	if(ch=='Y')
	{
		system("cls");
		return OK;
	}
	else
		return ERROR;
}

//--------------------------------------------------------------------无学生记录返回主界面------------------------------------------------------------------

Status Judge3()		
{
	printf("已经没有学生记录\n");
	ReturnMenu();
	menu();
	return OK;
}

//------------------------------------------------------------------------判断学生学号是否一样-------------------------------------------------------------- 
Status JudgeNO(int NO,Linklist L)
{
	int j=0;
	for(int i=0;i<L.length;i++){
		if(NO==L.elem[i].No)
			j++;
	}
	if(j==1){
		printf("该学号已经存在,请重新输入!\n");
		input(L);
	}
	return OK;
}	

//------------------------------------------------------------------------输入学生信息---------------------------------------------------------------- 
void input(Linklist L)
{
	printf("输入学生姓名:\n");
	fflush(stdin);
	gets(student.name);
	printf("输入学生宿舍号:\n");
	scanf("%d",&student.Room);
	
	printf("输入学生学号:\n");
	fflush(stdin);
	scanf("%d",&student.No);
	
	JudgeNO(student.No,L);
}

//-----------------------------------------------------------------------输出学生排序的信息-------------------------------------------------------------

void PrintSort(Linklist & L)		
{
	int i;
	printf("\n");
	printf("\t\t姓名                        学号         房号\n");
	for(i=0;i<L.length ;i++)
		printf("\t\t%-20s %10d   %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room);
}

//-----------------------------------------------------------------输出查找学生的信息(按学号或姓名)----------------------------------------------------

void PrintSearch(Linklist & L,int mid)	
{
	printf("查找成功   学生信息为\n");
	printf("\t\t姓名                        学号         房号\n");
	printf("\t\t%-20s %10d   %10d\n",L.elem[mid].name,L.elem[mid].No,L.elem[mid].Room);
}

//------------------------------------------------------------------------输出查找学生的信息(按房号)-------------------------------------------------------------

void PrintSearch1(Linklist & L,int mid)	
{
	printf("\t\t%-20s %10d %10d\n",L.elem[mid].name,L.elem[mid].No,L.elem[mid].Room);
}


//-------------------------------------------------------------------------插入学生信息-------------------------------------------------------------

Status insert(Linklist & L)		
{
	int i,j,k;
	int room[1000]={0};
	char ch;
	printf("\n插入学生信息为:\n");
	input(L); 
	if(room[student.Room]+1>6){
		printf("该宿舍已满员,请重新输入:\n");
		input(L);
	}
	if(L.length==0)
	{
		strcpy(L.elem[L.length].name,student.name);
		L.elem[L.length].No=student.No;
		L.elem[L.length].Room=student.Room;
		flag=1;
	}
	for(i=0;i<L.length;i++)
	{
		strcpy(L.elem[L.length].name,student.name);
		L.elem[L.length].No=student.No;
		L.elem[L.length].Room=student.Room;
		room[student.Room]++;
		flag=1;
	}
	L.length++;
	fflush(stdin);
	printf("\n是否继续插入:是的话按Y,否则按任意键返回");
	scanf("%c",&ch);
	if(ch=='Y')
		insert(L);
	else
		system("cls");
	return OK;
}

//-------------------------------------------------------------------------按学号删除-------------------------------------------------------

Status DeleteNO(Linklist &L)	
{   
	int i,j,k=-1;   
	char ch;    
	printf("\n\n请输入要删除学生的学号:");   
	scanf("%d",&student.No);   
	for(i=0;i<L.length;i++)   
	{    
		if(student.No==L.elem[i].No)    
		{     
			printf("该学生的信息为:\n");  
			printf("\t\t姓名                        学号         房号\n");
			printf("\t\t%-20s %10d   %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room);    
			k=i;     
			for(j=k;j<L.length-1;j++)      
				L.elem[j]=L.elem[j+1];              
			break;    
		}         
	}   
	if(i>=L.length) 
		printf("该学生不存在\n");   
	if(k>=0)
		L.length--;   
	fflush(stdin);     
	printf("\n是否继续删除?是的话按Y,否则按任意键返回:");   
	scanf("%c",&ch);   
	system("cls");   
	if(ch=='Y') 
		DeleteNO(L);   
	else 
		system("cls");
	return OK;
}

//-------------------------------------------------------------------------按姓名删除-------------------------------------------------------

Status DeleteName(Linklist &L)	
{   
	int i,j,k=-1;   
	char ch;    
	printf("\n\n请输入要删除学生的姓名:");   
	gets(student.name);   
	for(i=0;i<L.length;i++)   
	{    
		if(strcmp(student.name,L.elem[i].name)==0)    
		{     
			printf("该学生的信息为:\n");  
			printf("\t\t姓名                        学号         房号\n");
			printf("\t\t%-20s %10d   %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room);     
			k=i;     
			for(j=k;j<L.length-1;j++)      
				L.elem[j]=L.elem[j+1];              
			break;    
		}         
	}   
	if(i>=L.length) 
		printf("该学生不存在\n");   
	if(k>=0)
		L.length--;   
	fflush(stdin);     
	printf("\n是否继续删除?是的话按Y,否则按任意键返回:");   
	scanf("%c",&ch);   
	system("cls");   
	if(ch=='Y') 
		DeleteName(L);   
	else 
		system("cls");
	return OK;
}


//-------------------------------------------------------------------------按宿舍号删除-------------------------------------------------------

Status DeleteRoom(Linklist &L)	
{   
	int i,j,k=-1,n=L.length;   
	char ch;    
	printf("\n\n请输入要删除学生的宿舍号:");   
	scanf("%d",&student.Room); 
	
	printf("删除该宿舍学生的信息为:\n"); 
	printf("\t\t姓名                        学号         房号\n"); 
	for(i=0;i<L.length;i++)   
	{    
		if(student.Room==L.elem[i].Room)    
		{   
			printf("\t\t%-20s %10d   %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room);     
			k=i;     
			for(j=k;j<L.length-1;j++)      
				L.elem[j]=L.elem[j+1];
			if(k>0) 
				n--; 
		}
		if(i==L.length-1){
			break; 
		}         
	}   
	if(i>=L.length) 
		printf("此房间没有学生\n");   
	L.length=n;
	fflush(stdin);     
	printf("\n是否继续删除?是的话按Y,否则按任意键返回:");   
	scanf("%c",&ch);   
	system("cls");   
	if(ch=='Y') 
		DeleteRoom(L);   
	else 
		system("cls");
	return OK;
}
//--------------------------------------------------------------------------文件加载-------------------------------------------------------------- 
void Load(Linklist &L){
	FILE *fp;
	if((fp=fopen("dorm.txt","r"))==NULL)
	{
		printf("打开文件失败!\n\n");
		exit(0);
	}
	while(!feof(fp))
		fread(&L.elem[L.length],sizeof(Student),1,fp);
	fclose(fp);       
    printf("加载数据成功!\n\n");
} 
//--------------------------------------------------------------------------保存文件 ----------------------------------------------------------------
void JudgeSave(Linklist &L,int i)
{
	char ch;
	if(i){
		
		printf("是否保存(Y/N)?:");
		ch=getchar();
		getchar();
		while(ch!='N'&&ch!='Y')
		{
			printf("请输入Y或者N:");
			ch=getchar();
			getchar();
		}
		if(ch=='Y')
			Save(L);
	}
}

void Save(Linklist &L){
	int i;
	int flag1=0;
	FILE *fp;
    if((fp=fopen("dorm.txt","w"))==NULL)
    {
        printf("打开文件失败!\n\n");
        flag1=1;
        exit(0);
	}                             
	for(i=0;i<L.length;i++){
		fprintf(fp,"%s %d %d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room);
	}
        
    if(!flag1)
	{
        printf("数据存储成功!\n\n");
		flag=0;
	}
    fclose(fp);
}

 

如果报错的行有结构体,在声明结构体变量是,需要在结构体类型前加struct 。

比如struct Status test;