求助,请各位帮忙找下错误,和指点一下思路
我想写一个学生信息管理系统,下面是我试验性的一个程序,编译是能通过的,写入学生信息也没有问题。但进行成绩查询就出现了问题
但他的输出结果不对。最后的删除也有问题,应该和前面的问题是一样的。
我实在是看不明白,所以来求助一下。各路英雄好汉帮帮忙;指点下迷津。拜托了
#include<stdio.h>
#include<string.h>
#define N 3
void A();
void B();
void C();
struct stu{
char name[16];
int num;
}sta[N];
int main()
{
int x;
printf(" 学生查 \n");
printf("\n输入1写入学生信息 ");
printf("\n输入2进行学生查询 ");
printf("\n输入3删除学生成绩 ");
printf("\n***********************\n");
scanf("%d",&x);
switch(x)
{
case 1: A(); break;
case 2: B(); break;
case 3: C(); break;
default: break;
}
}
void A()
{
FILE *fp;int i;
if((fp=fopen("xueshen.txt","w"))==NULL)
{
printf("打开失败!!!"); return;
}
for(i=0;i<N;i++)
{
printf("输入名字:");
scanf("%s",sta[i].name );
printf("输入成绩:");
scanf("%s",&sta[i].num );
}
for(i=0;i<N;i++)
fwrite(&sta[i],sizeof( struct stu),1,fp);
fclose(fp);
return ;
}
void B()
{
FILE *fp; int i,x;
if((fp=fopen("xueshen.txt","r+"))==NULL)
{
printf("失败!!");
return ;
}
for(i=0;i<N;i++)
fread(&sta[i],sizeof( struct stu),1,fp);
printf("输入要查询的成绩:");
scanf("%d",&x);
for(i=0;i<N;i++)
if(sta[i].num == x );
{
printf("名字是%s:\n",sta[i].name );
printf("成绩是%d",sta[i].num );
}
fclose(fp);
return ;
}
void C()
{
FILE *fp;
int i,m,j,x,y;
char ch[2];
if((fp=fopen("xueshen.txt","r+"))==NULL)
{
printf("失败!!");
return ;
}
for(i=0;i<N;i++)
{
fread(&sta[i],sizeof( struct stu),1,fp);
m++;
}
printf("输入要删除的成绩:");
scanf("%d",&x);
for(i=0;i<N;i++)
if(sta[i].num == x );
{
printf("名字是%s:",sta[i].name );
printf("成绩是%d",sta[i].num );
y=i;
}
fclose(fp);
printf("是否删除?请输入'Y'");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
for(j=y;j<N;j++)
{
sta[j]=sta[j+1];
m--;
}
for(j=0;j<m;j++)
if(fwrite(&sta[j],sizeof( struct stu),1,fp)!=1)
{
printf("失败!!!");
}
}