哪位大神帮下指正下是哪出问题的,小弟不甚感激!!
我用的是windows 7系统,C++兼容性不是很好,老出错。以下是我写的,模仿书上的“数据块读、写函数”加上自己理解的一些皮毛,编成如下结果,哪位大神帮下指正下是哪出问题的,小弟不甚感激!!(忙了快整整两天,又是看课本又是上网了解基本信息,头都大了)
/*已知在文件in.dat(这里我直接是将数据输入文件中)中存有若干个(个数<20)四位数字的正整数,
一、函数readdat()读取这若干个正整数并存入数组xx中。
二、函数calvalue(),其功能要求:
1、求出这文件中共有多少个正整数totnum;
2、求出这些数中的各位数字之和是偶数的数的个数totcnt,
3、满足此条件的这些数的算术平均值totpjz
三、调用函数writedat()把所求的结果输出。*/
#include "stdlib.h"
#include "stdio.h"
#define N 20
struct date
{
int num;
}dat[20];
void scanfmun (int filename[],int n) //将数据写入文件中
{
FILE *fp;
int i;
if((fp=fopen(filename,"wb"))==NULL)
{
printf("Cant' open this file!");
exit(0);
}
for(i=0;i<n;i++)
if(fwrite(&dat[i],sizeof(struct date),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void readdat(int filename[],int n) //函数readdat()读取这若干个正整数并存入数组xx中
{
FILE *fp;
int i;
if((fp=fopen(filename, "rb"))==NULL)
{
printf("Can't open this file!");
exit(0);
}
fread(dat,sizeof(struct date),n,fp);
for(i=0;i<n;i++)
printf("%d\n",dat[i].num);
fclose(fp);
}
void calvalue()
{
int t,p,n,i,totpjz,a=0,b=0,c=0,d=0,totcnt=0,q=0;
printf("the count of these number is:%d",n); //1、求出这文件中共有多少个正整数totnum;
for(i=0;i<n;i++)
{
a=dat[i] % 10; dat[i]= dat[i] / 10;
b=dat[i] % 10; dat[i]= dat[i] / 10;
c=dat[i] % 10; dat[i]= dat[i] / 10;
d=dat[i] % 10; dat[i]= dat[i] / 10; //这里出现错误,是说"%"和“/除号”不符合struct格式之类的
t=(a+b+c+d)%2;
if(t=0)
{ totcnt++;
p=a+b*10+c*100+d*1000;
q=q+p;
}
}
totpjz=q/totcnt;
printf("The number of totcnt is:%d",totcnt); //求出这些数中的各位数字之和是偶数的数的个数totcnt
printf("The average is:%f.2",totpjz) ; //满足此条件的这些数的算术平均值totpjz
} void main()
{
int i,n;
char filename[20];
printf("print the count of number:");
scanf("%d",&n);
printf("please print the name of file:");
scanf("%s",filename);
printf("print the number:\n");
for(i=0;i<n;i++);
{
scanf("%d\n",&dat[i].num);
}
scanfmun(filename,n);
printnum(filename,n);
calvalue(); }