工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1764|回复: 4

怎样结束一个函数

[复制链接]
发表于 2007-1-14 15:06 | 显示全部楼层 |阅读模式
请问怎样可以在运行完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函数返回的话
所有的函数都没有结束,之前开辟的内存空间都不会被释放
这样到了后面就会占用很多的内存空间
请问又没有什么办法既可以返回界面,又可以结束之前调用的函数呢??
发表于 2007-1-14 15:34 | 显示全部楼层
用个while包主mainmenu就可以啦
然后add里面直接返回就可以了。
回复

使用道具 举报

发表于 2007-1-14 15:38 | 显示全部楼层
return 是函数返回
exit() 退出程序
回复

使用道具 举报

发表于 2007-1-14 23:03 | 显示全部楼层
循环
回复

使用道具 举报

 楼主| 发表于 2007-1-16 22:11 | 显示全部楼层
谢谢.
课程设计做好了!
当时宿舍没电,整部电脑拿去同学宿舍做
没能上来看答案。
不过我最终是用了#2的方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-6-1 14:03

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表