人用进废退的例子:谁帮我看下这个程序为什么不能把写的东西储存在文件里

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/25 15:49:44
include <stdio.h>
#include <stdlib.h>
#define N 100
void addsubs();
void modsubs();
void delsubs();

/*文件打开*/

/////////////////////////////////////////添加学生成绩//////////////////////////////////////////////////////
int openFile(char *s)
{
if(fp!=NULL)fclose(fp);
if((fp=fopen("c:\\123.dat",s))!=NULL)return 1;
return 0;
}
void addsubs()
{
int i,n;
system("cls");
if((fp=fopen("c:123.dat","r+"))==NULL)
{
printf("找不到文件\n");
quit();
}
printf("你要录入多少个学生:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\n\t第%d个学生开始纪录-----\n",i+1);
printf("\n\t请输入学生编号:");scanf("%d",&st[i].num);
printf("\n\t请输入学生姓名:");scanf("%s",&st[i].name);
printf("\n\t请输入语文成绩:");scanf("%d",&st[i].yuwen);
printf("\n\t请输入数学成绩:");scanf("%d",&st[i].shuxue);
printf("\n\t请输入英语成绩;");scanf("%d",&st[i].yingyu);
st[i].total=st[i].yingyu+st[i].shuxue+st[i].yuwen;
printf("\n\t总分:%d\n",st[i].total);
}
i=0;
do{
fwrite(&st[i],sizeof(struct student),1,fp);
i++;
}while(i<n);
printf("成绩已保存\n");
printf(" 学号 姓名 语文 数学 英语 总分\n");
for(i=0;i<n;i++)
printf("%5d %5s %5d %5d %5d %5d\n",st[i].num,st[i].name,st[i].yuwen,st[i].shuxue,
st[i].yingyu,st[i].total=st[i].yingyu+st[i].shuxue+st[i].yuwen);
}
///////////////////////修改学生成绩///////////////////////////
void modsubs()
{
int num,i=0;
char c;
system("cls");
printf("\t请输入您要修改的学生的学号:");
scanf("%d",&num);
if(openFile("rb")==0)
{
printf("\n\t\t数据文件不存在.");
return;
}
if(i==N){
printf("\n\t\t没有找到您所需要的学生.");}
printf("您所要修改的学生成绩如下:\n");
printf(" 学号 姓名 语文 数学 英语 总分\n");
for(i=0;i<N;i++)
printf("%5d %5s %5d %5d %5d %5d\n",st[i].num,st[i].name,st[i].yuwen,st[i].shuxue,
st[i].yingyu,st[i].total=st[i].yingyu+st[i].shuxue+st[i].yuwen);

printf("\t\t确认修改(Y/N)?");
getchar();
scanf("%c",&c);
if(c=='y'||c=='Y')
{
printf("\t\t请输入学生编号:");scanf("%d",&st[i].num);
printf("\t\t请输入学生姓名:");scanf("%s",&st[i].name);
printf("\t\t请输入语文成绩:");scanf("%d",&st[i].yuwen);
printf("\t\t请输入数学成绩:");scanf("%d",&st[i].shuxue);
printf("\t\t请输入英语成绩:");scanf("%d",&st[i].yingyu);
}
fclose(fp);
if(openFile("ab")==0)
{
printf("\n\t\t打开文件失败.");
return;
}
for(i=0;i<N;i++)fwrite(&st[i],sizeof(struct student),1,fp);
printf("\n\t\t修改成功!");
fclose(fp);
}

我输入数据后 没存储到文件里
后面的还没做完 不用管 就帮我看看添加学生成绩 那个 和如何修改`~ 由于字数太多了 前的的定义删掉了`
有问题加我QQ167150110
1楼的 你那是一样的?

if((fp=fopen("c:123.dat","r+"))==NULL)

改为if((fp=fopen("c:\\123.dat","r+"))==NULL)