搜索
查看: 1020|回复: 3
打印 上一主题 下一主题

c语言大神求救!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-6-22 19:43:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>

int N=5;
struct student
{
char name[20];
int num;
char sex[10];

}p[100];
void Input(struct student s[])
{
FILE *fp;
int i;
if((fp=fopen("d:\\student.dat","wb+"))==NULL)
{
printf("Cannot open file.\n");

}

for(i=0;i<N;i++)
{
printf("请输入第%d个学生的姓名,学号,性别\n",i+1);
scanf("%s",&s[i].name);
scanf("%d",&s[i].num);
scanf("%s",&s[i].sex);
printf("%s",s[i].name);
fwrite(&s[i],sizeof(struct student),1,fp);
}
}

void Interface()
{
printf(" ***************学生成绩管理系统***************\n");
printf("*************************************************************\n\n");
printf(" ---------------<<欢迎您使用学生成绩管理系统>>--------------\n\n");
printf("*************************************************************\n\n\n");/*菜单选择*/
printf(" * 【0】退出本系统 * \n");
printf(" * 【1】输入学生信息 * \n");
printf(" * 【2】输出学生信息 * \n");
printf(" * 【3】修改学生信息 * \n");
printf(" * 【4】添加学生信息 * \n");
printf(" * 【5】删除学生信息 * \n");
printf(" * 【6】查找学生信息 * \n");
printf(" * 【7】保存到磁盘 * \n\n\n");
printf("*************************************************************\n");


}
main()
{

int flag;
while(1)
{

Interface();
printf("请输入:");
scanf("%d",&flag);
switch(flag)
{
case 0: break;
case 1:Input(p);break;
}
} system("pause");
return 0;
}


运行这个程序,输入的学生成绩,放不进student.txt文件夹里?怎么回事?

沙发
发表于 2013-6-22 20:52:51 | 只看该作者
本帖最后由 rosynirvana 于 2013-6-22 20:56 编辑

1. 你指定的存储位置是student.dat,所以student.txt当然没有
2. 整个程序包在一个死循环里面,只能强制退出,然后你没有手动关闭文件,所以写在缓存里的东西丢失了。
你可以选择在iput的最后关闭文件,fclose(fp),或者把程序的死循环去掉,把case 0修正成一个goto,跳出多层嵌套的结构。
3.scanf("%s",&s.name);
scanf("%s",&s.sex);
这两句编译器抱warning,&去掉就好了
板凳
 楼主| 发表于 2013-6-22 23:11:08 | 只看该作者
rosynirvana 发表于 2013-6-22 20:52
1. 你指定的存储位置是student.dat,所以student.txt当然没有
2. 整个程序包在一个死循环里面,只能强制退 ...

真乃大神也!如果我case 0:要设置成跳出整个程序怎么办?
地板
发表于 2013-6-22 23:55:29 | 只看该作者
jiaquan1994219 发表于 2013-6-22 23:11
真乃大神也!如果我case 0:要设置成跳出整个程序怎么办?

return 0;
exit(0);

两句之间随便选一句
或者用goto
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表