啊哈磊_编程从这里起步

标题: c语言大神求救! [打印本页]

作者: jiaquan1994219    时间: 2013-6-22 19:43
标题: c语言大神求救!
#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文件夹里?怎么回事?
作者: rosynirvana    时间: 2013-6-22 20:52
本帖最后由 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,&去掉就好了

作者: jiaquan1994219    时间: 2013-6-22 23:11
rosynirvana 发表于 2013-6-22 20:52
1. 你指定的存储位置是student.dat,所以student.txt当然没有
2. 整个程序包在一个死循环里面,只能强制退 ...

真乃大神也!如果我case 0:要设置成跳出整个程序怎么办?
作者: rosynirvana    时间: 2013-6-22 23:55
jiaquan1994219 发表于 2013-6-22 23:11
真乃大神也!如果我case 0:要设置成跳出整个程序怎么办?

return 0;
exit(0);

两句之间随便选一句
或者用goto




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2