#include "ISaver.h"
int main(int argc,char *argv[]){
FILE *fpi,*fpo
int s[100],n,t,i,k
double ave
fpi=fopen("dat1.dat","r")
if(!fpi || (fpo=fopen("dat6.dat","w"))==NULL){
printf("Failed to open the file, exit...\n")
return 0
}
for(k=i=0i<100i++){//读入数据并输出
fscanf(fpi,"%d",s+i)
printf(++k%10 ? "%4d" : "%4d\n",s[i])
}
fclose(fpi)
printf("\nThe average are %g\n",ave=isaver(s,100))//求平均值并输出
for(k=i=0i<100i++)//把小于平均值的数据...
if(ave>s[i]){
printf(++k%10 ? "%4d" : "%4d\n",s[i])//输出到屏幕
fprintf(fpo,"%d ",s[i])//同时输出到文件dat6.dat
}
fclose(fpo)
if(k%10)
printf("\n")
return 0
}
ISaver.h文件
运行结果:
dat1.dat文件
dat6.dat文件
首先不是溢出256不可能溢出int
其次那个十六进制的高低位不是你看到的那样
要换一下位置
FF 00 00 00-》00 00 00 FF
如buf=256时,为00 01 00 00 -》00 00 01 00
buf=257 01 01 00 00,-》 00 00 01 01
buf=258 02 01 00 00,00 00 01 02
buf=259 03 01 00 00,
这根windows系统存储数据的高低位有关系
linux就会不一样,你要是有条件的话可以在linux上试一下
如果你不是很确定的话可以用fread读进来看看,就知道是不是出错了,那个高低位的问题你在查一下,具体的我记得不是很清楚,害怕给你说错了,但是高低位肯定要换的