C语言:文件

Python017

C语言:文件,第1张

#include "stdio.h"

#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读进来看看,就知道是不是出错了,那个高低位的问题你在查一下,具体的我记得不是很清楚,害怕给你说错了,但是高低位肯定要换的