|
请问怎样可以在运行完add函数后既可以返回主函数又可以结束add函数和之前调用的mainmenu函数?
(代码并不重要,可以不看)
void mainmenu(void)
{
system("cls");
printf("\t\twelcom to the Student Score MIS\n");
printf("************************Main Menu************************\n");
printf("*\t1. Add Record\t\t2. Require Record\t*\n");
printf("*\t3. Delete Record\t4. Modify Record\t*\n");
printf("*\t5. Sort Record\t\t6. Save data\t\t*\n");
printf("*\t7. Load Data\t\t8. Exit\t\t\t*\n");
printf("*********************************************************\n");
switch(getchar())
{
case '1':add();break;
case '2':menu2();break;
case '3':del;break;
case '4':modify();break;
case '5':menu5();break;
case '6':save();break;
case '7':load();break;
case '8':exit(0);
}
} void add(void)
{
struct student*p;
printf ("please enter student's num,name,english score,math score,c proam score.entering will end when the number is \'0\'.\n");
p=(struct student*)malloc(L);
scanf(SFORM,SPARA);
if (count==0) {head=p;tail=p;p->next=NULL;p->pre=NULL;count++;}
else
while(strcmp(p->num,"0")!=0)
{ count++;
tail->next=p;p->pre=tail;p->next=NULL;tail=p;
p=(struct student*)malloc(L);
scanf(SFORM,SPARA);
}
free(p);
}
如果我在add的后面直接调用mainmenu函数的话程序运行就会如下
mainmenu-》add-》mainmenu
这样前面已打开的mainmenu函数和add函数就没有结束
申请过的变量也不会被释放
如果全部都是这样直接直接调用mainmenu函数返回的话
所有的函数都没有结束,之前开辟的内存空间都不会被释放
这样到了后面就会占用很多的内存空间
请问又没有什么办法既可以返回界面,又可以结束之前调用的函数呢?? |
|