有3個學生,每個學生的資料包括學號(num),姓名(name[20]), 性別 (sex), 三門課的成績 (score[3]), 要求從鍵盤輸入這3個同學的資料,然后呼叫fun1函式將3個同學的學號、姓名、性別 和總分資料以二進制形式寫入檔案out.dat中,再呼叫fun2函式從檔案out.dat中讀取資料,并輸出到螢屏上。
#include <stdio.h>
#include <stdlib.h>
#define N 3
struct student
{
int num ;
char name[10];
char sex;
float score[3];
int sum;
}stu[N] ;
void fun1()
{
FILE *fp;
int i;
if( (fp= fopen("out.dat","wb"))== NULL)
{
printf("cannot open file\n") ;
exit(0) ;
}
for(i=0;i<N;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf ("file write error\n") ;
fclose(fp) ;
}
void fun2 ()
{
FILE * fp;
int i;
struct student stu[N] ;
if((fp= fopen ("out.dat","rb"))== NULL)
{
printf ("cannot open file \n") ;
exit (0) ;
}
for (i=0;i<N;i++ )
{
fread(&stu[i],sizeof(struct student),1,fp) ;
printf("%d%s%s%d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].sum);
fclose(fp) ;
}
}
int main()
{
int i,j,sum;
for(i=0;i<N;i++ )
{
printf ("input scores of student %d;\n",i+1) ;
printf ("NO. :") ;
scanf ("%d",&stu[i].num) ;
printf ("name:");
scanf ("%s",&stu[i].name) ;
printf ("sex:");
scanf ("%s",&stu[i].sex);
sum=0;
for(j=0;j<3;j++)
{
printf ("score %d:",j+1) ;
scanf ("%f",&stu[i].score[j]) ;
sum=sum+stu[i].score[j] ;
}
stu[i].sum=sum;
}
fun1();
fun2();
return 0;
}
uj5u.com熱心網友回復:
什么問題呢???uj5u.com熱心網友回復:
大一新手,這個是作業,我感覺大框是對的但是運行失敗,自己是在看不出來哪里有問題,求大佬們轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/52066.html
標籤:C++ 語言
上一篇:Dev下建立的工程檔案顯示無法找到某個頭檔案,但它們已經在同一個目錄下
下一篇:VS2015 打開工程專案失敗
