需要数据的时候文件打开有问题

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define LEN 15
#define N 10
struct score
{
	int ID;//学号//
	char cn;//课程编号//
	char ct;//课程名称//
	int credit;//学分//
	int up;//平时成绩//
	int ter;//实验成绩//
	int qpg;//卷面成绩//
	double cp;//综合成绩//
	double tac;//实得学分//
};
struct stu 
{
const char *ID;//学号//
char name;//姓名//
int tel;//电话号码//
const char *tdn;//宿舍号码//
char sex;//性别//
};
void help();
void sort(score s2[]);
void menu();
void readfile();
void writefile();
void del(stu s1[],score s2[]);
void seek(stu s1[],score s2[]);
int main()
{
	void readfile();
		void writefile();
	while(1)
	{
		menu();
	}
	system("pause");
	return 0;
}
void menu()
{
int num;
stu s1[LEN];
score s2[LEN];
printf(" \n\n                      \n\n");
printf("*******学生信息管理系统********\n");
printf("*****欢迎使用学生信息管系统****\n");
printf("-------------------------------\n");
printf("*****    系统功能菜单     *****\n");
printf("-------------------------------\n");
printf("* 1.系统帮助 * *  2.查询  **\n");
printf("*******************************\n");
printf("* 3.排序     * *  4.删除   ****\n");
printf("*******************************\n");
printf("* 5.退出系统  *\n"); 
printf("***************\n");
printf("--------------   --------------\n");
printf("请选择功能编号\n");
scanf_s("%d",&num);
switch (num)
 {
	case 1:help();break;

	case 2:seek(s1,s2);break;
	case 3:sort(s2);break;
	case 4:del(s1,s2);break;
	case 5:
		num=0;
		printf("即将退出系统!\n");
		break;
	default:("请在1-5之间选择\n");
 }
}
void readfile(char *fname,stu s[])
{
	FILE *fp;
	int j=0;
	fp=fopen("D:\\A.txt","r");
	if(fp==NULL);
	fscanf_s(fp,"%s %s %s %d %s\n",&s[j].ID,&s[j].name,&s[j].sex,&s[j].tel,&s[j].tdn);
	while(fp!=0)
	{
		j++;
		fscanf_s(fp,"%s %s %s %d %s\n",&s[j].ID,&s[j].name,&s[j].sex,&s[j].tel,&s[j].tdn);
	}
	fclose(fp);
}
void writefile(char *fame,score s[])
	{
		printf("请输入新建文件名\n");
		scanf("%s","D://B.TXT");
		FILE *fp;
		int i;
		fp=fopen("D://B.TXT","w");
		if(fp==0);
		{
			printf("文件打开失败!\n");
		}
		for(i=0;i<N;i++)
		{
			if(s[i].ter<0)
	{
		s[i].cp=s[i].up*0.3+s[i].qpg*0.7;
	}
	else
	{
		s[i].cp=s[i].up*0.15+s[i].ter*0.15+s[i].qpg*0.7;
	}
	if(s[i].cp<60) {s[i].tac=s[i].tac*0;}
	if(s[i].cp>=60&&s[i].cp<70) {s[i].tac=s[i].tac*0.6;}
	if(s[i].cp>=70&&s[i].cp<=80) {s[i].tac=s[i].tac*0.75;}
	if(s[i].cp>=80&&s[i].cp<90) {s[i].tac=s[i].tac*0.8;}
	if(s[i].cp>=90&&s[i].cp<100) {s[i].tac=s[i].tac;}
		}
		for(i=0;i<N;i++)
		{
			fprintf(fp,"%-4d%-4c%-4s%-4lf%-4d%-4d%-4d%-4lf%-4lf\n",&s[i].ID,&s[i].cn,s[i].ct,&s[i].credit,&s[i].up,&s[i].ter,&s[i].qpg,&s[i].cp,&s[i].tac);
			printf("%-4d%-4c%-4s%-4lf%-4d%-4d%-4d%-4lf%-4lf\n",&s[i].ID,&s[i].cn,s[i].ct,&s[i].credit,&s[i].up,&s[i].ter,&s[i].qpg,&s[i].cp,&s[i].tac);
		}
		fclose(fp);
	}
void seek(stu s1[],score s2[])
{
	int i,flag,k=0,item=0;
	double s=0;
	char t1[LEN+1];
	char t2[LEN+1];
	printf("****  查询菜单   ****\n");
	printf("---------------------\n");
	printf("----1.按学号查询----\n");
	printf("---- 2.按姓名查询----\n");
	printf("-----3.按宿舍查询----\n");
	printf("-----4.成绩查询------\n");
	printf("-----5.退出本菜单----\n");
	printf("---------------------\n");
	printf("请选择子菜单编号\n");
		scanf_s("%d",&item);
		flag=0;
		switch(item)
		{
		case 1:
			printf("请输入要查询学生学号\n");
			scanf_s("%s",t1);
			for (i = 0; i<N; i++)
			{
				if (strcmp(t1,s1[i].ID) == 0)
				{
					flag = 1;
					printf("学生学号\t学生姓名\t性别\t宿舍号码\t电话号码\n");
					printf("--------------------------------------------------------------------\n");
					printf("%s\t%s\t%s\t%d\t%d\n", s1[i].ID,s1[i].name,s1[i].sex,s1[i].tdn,s1[i].tel);
					break;
				}	
			}
				if (0 == flag)
				{
					printf("该学号不存在!\n");break;
				}
		case 2:
			printf("请输入要查询的学生的姓名:\n");
			scanf_s("%s", t1);
			for (i = 0; i<N; i++)
			if (strcmp(s1[i].ID, "t1") == 0)
			{
				flag = 1;
				printf("学生学号\t学生姓名\t性别\t宿舍号码\t电话号码\n");
				printf("--------------------------------------------------------------------\n");
				printf("%s\t%s\t%s\t%d\t%d\n", s1[i].ID,s1[i].name,s1[i].sex,s1[i].tdn,s1[i].tel);
			}
				if (0 == flag)
				printf("该姓名不存在!\n"); break;
		case 3:
			printf("请输入要查询学生宿舍号码\n");
			scanf_s("%s",t2);
			for (i = 0; i<N; i++)
			if (strcmp(s1[i].tdn, t2) == 0)
			{
				flag = 1;
				printf("学生学号\t学生姓名\t性别\t宿舍号码\t电话号码\n");
				printf("--------------------------------------------------------------------\n");
				printf("%s\t%s\t%s\t%d\t%d\n", s1[i].ID,s1[i].name,s1[i].sex,s1[i].tdn,s1[i].tel);
			}
				if (0 == flag)
				printf("该宿舍号码不存在!\n"); break;
		case 4:
			printf("请输入要查询学生的学号\n");
scanf_s("%s",s1);
printf("请输入要查询学生学号\n");
			scanf_s("%s",t1);
for (i = 0; i<N; i++)
			if (strcmp(t1,s1[i].ID) == 0)
			{
				printf("学    号:%6d姓    名:%6s\n",s2[i].ID,s1[i].name);
				printf("课程编号:%6d课程名称:%6s\n",s2[i].cn,s2[i].ct);
				k++;
				s=s+s2[i].ct;
			}
				printf("共修:%d科,实得总学分为:%lf",k,s);
				if(0==flag)
					printf("该学号不存在!\n"); break;
		case 5:
			flag=0;
			printf("即将退出本菜单!\n"); break;
		default: printf("请在1-5之间输入\n"); break;
		}
}
void help()
	{
	printf("\n0.欢迎使用系统帮助!\n");
	printf("\n1.初次进入系统后,请先录入学生信息;\n");
	printf("\n2.按照菜单提示键入数字代号;\n");
	printf("\n4.谢谢您的使用!\n");
	}
void del(stu s1[],score s2[])
	{
int i=0,flag = 0;
int j;
int n=15;
	char t1[LEN + 1];
	printf("请输入要删除学生的学号:\n");
	scanf_s("%s", t1);
	for (i = 0; i < N; i++){
		if (strcmp(s1[i].ID, t1) == 0){
			flag = 1;
			//要删除学生后面的学生往前移一位
			for (j = i; j < N - 1; j++){
				s1[j] = s1[j + 1];
				s2[j]=s2[j+1];
			}
		}
	}
		//查找失败
		if (0 == flag){
			printf("该学号不存在!!!\n");
		}
		if (1 == flag)
		{
		printf("删除成功!!!");
			//删除成功,学生人数减1
			n--;
		}
		system("pause");
}	
void sort(score s2[])
	{
		int i,k,index;
		score temp;
		for(k=0;k<N-1;k++)
		{
			index=k;
			for(i=k+1;i<N;i++)
				if(s2[i].tac<s2[index].tac)
					index=i;
			if(index!=k)
			{
				temp=s2[index];
				s2[index]=s2[i];
				s2[i]=temp;
			}
			printf("学号 课程编号 课程名称  学分 平时成绩  实验成绩   卷面成绩  综合成绩  实得学分");
			for(i=0;i<N;i++)
			{
				printf("%d %c %s %f %d %d %d %f %f\n",s2[i].ID,s2[i].cn,s2[i].ct,s2[i].credit,s2[i].up,s2[i].ter,s2[i].qpg,s2[i].cp,s2[i].tac);
			}
		}
		}

 

报错信息呢,总有报错吧

if(fp==NULL); ---- if语句后面你加个分号干啥?加了就完全两回事了,下一行语句会始终运行的

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632