首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

文件存储的一个小疑点,各位帮忙看看是什么原因

2012-08-01 
文件存储的一个小问题,各位帮忙看看是什么原因?#includestdio.h#includestdlib.h#includetime.h#def

文件存储的一个小问题,各位帮忙看看是什么原因?
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10000
long s[N],a[N];
int b[10]={0};
void ran()
{
FILE *fp;
int i;
int max=s[0],min;
srand(time(0));
if((fp=fopen("e:\\rnum.txt","w"))==NULL)
{
printf("cannot open file!");
exit(0);
}
for(i=0;i<N;i++)
{
s[i]=(rand()%8999)+1000; //产生1000~9999的随机数
fprintf(fp,"%6d",s[i]);
//printf("%6d",s[i]);
}
min=s[0];
for(i=0;i<N;i++)
{
  if(s[i]>max)
max=s[i];
if(s[i]<min)
min=s[i];
}
fprintf(fp,"\n最小值是:%d\n最大值是:%d",min,max);
fclose(fp);

}
sort()
{
int max=s[0],min=s[0]; //选择排序
int i,j,t,k;
for(i=0;i<N;i++)
{
t=i;
for(j=i+1;j<N;j++)
if(s[j]<s[t])
t=j;
k=s[i];
s[i]=s[t];
s[t]=k;

}
for(i=0;i<N;i++)
{
if(s[i]>max)
max=s[i];
if(s[i]<min)
min=s[i];
}
printf("最小值是:%d\n最大值是:%d",min,max);
for(i=0;i<1000;i++)
a[i]=s[i];

}
writedat() //排序结果保存文件中
{
int i,n;
FILE *fp;
if((fp=fopen("e:\\sort.txt","w"))==NULL)
{
printf("cannot open file!");
exit(0);
}
for(i=0;i<N;i++)
{
fprintf(fp,"%6d",a[i]);
n=a[i]/1000;
switch(n)
{
case 1: b[0]++;break;
case 2: b[1]++;break;
case 3: b[2]++;break;
case 4: b[3]++;break;
case 5: b[4]++;break;
case 6: b[5]++;break;
case 7: b[6]++;break;
case 8: b[7]++;break;
case 9: b[8]++;break;
default: break;
}
}
fprintf(fp,"\n-----------统计结果------------");
for(i=1;i<10;i++)
fprintf(fp,"\n最高位是%d的个数是:%d",i,b[i-1]);
fclose(fp);
}
void main()
{
ran(); //调用产生随即数函数
sort();//调用排序函数
writedat(); //排序结果写入文件
}

 当个数N是1000的时候能正常得出结果,但是N取较大的数的时候就出错了,比如10000个数。
请问是哪里设置不当了?? 谢谢!

[解决办法]
这…自行解决啦…

热点排行