c语言程序出现错误,C语言程序错误,不能正常读写文件,求解啊
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
#define LEN sizeof(struct student)
#include
#include
#include
struct student
{
int num;
char name[20];
int score[3];
int aver;
}; void personal_information_input(FILE *fp)
{
struct student *p;
int a,i,n;
printf("請輸入將要輸入的學生個數: ");
scanf("%d",&n);
printf("請輸入學生的學號姓名和三科成績:\n");
for(i=0;i
{
a=i+1;
printf("%d:",a);
p=(struct student *)malloc(LEN);
scanf("%d%s%d%d%d",&p->num,&p->name,&p->score[0],&p->score[1],&p->score[2]);
fwrite(p,LEN,1,fp);
p++;
}
} void personal_information_print(FILE *fp)
{
struct student *p,*p1;
int i=0;
p=(struct student *)malloc(LEN);
printf("請輸入需要查找的學生的學號: ");
scanf("%d",&p->num);
p1=(struct student *)malloc(LEN);
fread(p1,LEN,1,fp);
while(!feof(fp))
{
fread(p1,LEN,1,fp);
if(p1->num==p->num)
printf("學號:%d 姓名:%s 成績:%d %d %d 平均成績:%d\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->aver);
p1++;
fread(p1,LEN,1,fp);
}
} void average(FILE *fp)
{
struct student *p1;
p1=(struct student *)malloc(LEN);
fread(p1,LEN,1,fp);
while(!feof(fp))
{
p1->aver=(p1->score[0]+p1->score[1]+p1->score[2])/3.0;
fwrite(p1,LEN,1,fp);
p1++;
// p1=(struct student *)malloc(LEN);
fread(p1,LEN,1,fp);
}
}
void score_output(FILE *fp)
{
struct student *p1;
p1=(struct student *)malloc(LEN);
fread(p1,LEN,1,fp);
while(!feof(fp))
{
printf("學號:%d 姓名:%s 成績:%d %d %d 平均成績:%d\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->aver);
// p1=(struct student *)malloc(LEN);
p1++;
fread(p1,LEN,1,fp);
}
}
void score_search(FILE *fp)
{
struct student *p,*p1;
p=(struct student *)malloc(LEN);
printf("輸入要查找的學生成績: ");
scanf("%d",&p->score[0]);
p1=(struct student *)malloc(LEN);
fread(p1,LEN,1,fp);
while(!feof(fp))
{
if(p1->score[0]==p->score[0])
printf("學號:%d 姓名:%s 成績:%d %d %d 平均成績:%d\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->aver);
else if(p1->score[1]==p->score[0])
printf("學號:%d 姓名:%s 成績:%d %d %d 平均成績:%d\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->aver);
else if(p1->score[2]==p->score[0])
printf("學號:%d 姓名:%s 成績:%d %dd %d 平均成績:%d\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->aver);
p1=(struct student *)malloc(LEN);
fread(p1,LEN,1,fp);
p1++;
}
} void main()
{
char ch;
FILE *fp;
char filename[20];
printf("請輸入所用的文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"ab+"))==NULL)
{
printf("無法打開此文件!\n");
exit(0);
}
else
{ fp=fopen(filename,"wb+"); }
ch=getchar();
while(1)
{
printf("\n******************歡迎使用學生信息管理系統********************\n");
printf("\n******************** 1. 個人信息的錄入 ********************\n");
printf("\n******************** 2. 個人信息的輸出 ********************\n");
printf("\n******************** 3. 計算平均成績 ********************\n");
printf("\n******************** 4. 成績的查詢 ********************\n");
printf("\n******************** 5. 成績的輸出 ********************\n");
printf("\n******************** 6. 退出程序 ********************\n");
printf("\n************ 請選擇上述選項執行相應的操作 ************\n");
printf("************** 你選擇執行的選項是: ");
ch=getchar();
switch (ch)
{
case '1':personal_information_input(fp);break;
case '2':personal_information_print(fp);break;
case '3':average(fp);break;
case '4':score_search(fp);break;
case '5':score_output(fp);break;
case '6':exit(0);
default: break;
}
getchar();
}
}
總結
以上是生活随笔為你收集整理的c语言程序出现错误,C语言程序错误,不能正常读写文件,求解啊的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统做的小游戏,2007最新
- 下一篇: c语言指针索引数组,C语言数组指针表示法