我有一个txt文档里面有800X800的个数,在C语言中我设立了一个二维数组我想把这些数全部存在这个二维数组中

数据中有很多小数,我想问下怎么存入,最好有程序,本人C或者C++不是很好。比如说这个文档在C盘目录下(只有这么多财富了)

里面的M,N你自己设定:800*800的数组有点大,所以一般这种太大的存储结构是不会这样实现的

/**********************************************

*2011-4-25 21:07

***********************************************/

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define M 10

#define N 10

short array[M][N]={0};//全局数组

int i=0,j=0;

void write_file();//在当前程序目录下生成数据文件

void read_file();//将数据文件中数据导入数组存储

void main(void)

{//测试数组中数据是否获取自数据文件

 int pos=1;

 write_file();

 read_file();

 do

 {

  printf("你想要显示文件中第几号数据(1-%d):\n",M*N);

  scanf("%d",&pos);

  i=(pos-1)/M;

  j=(pos-1)%N;

  printf("%7d\n",array[i][j]);

 }while(pos>0 && pos<=M*N);

}

void write_file()

{

 FILE *fp;

 if(!(fp=fopen("data.dat","w")))

 {

  printf("fail to open file--'data.dat'!\n");

  system("pause");

  exit(0);

 }

 srand((unsigned)time(NULL));

 for(i=0;i<M;i++)

 {

  for(j=0;j<N;j++)

  {

   fprintf(fp,"%-7d",rand());

  }

 }

 fclose(fp);

}

void read_file()

{

 FILE *fp;

 if(!(fp=fopen("data.dat","r")))

 {

  printf("fail to open file--'data.dat'!\n");

  system("pause");

  exit(0);

 }

 for(i=0;i<M;i++)

 {

  for(j=0;j<N;j++)

  {

   fscanf(fp,"%7d",&array[i][j]);

  }

 }

 fclose(fp);

}

里面的write_file()是为了生成一个10*10整形数据的文件,在数据文件生成之后,这个程序可以关掉,直接用read_file()就可以将数据导入到数组,然后用主程序测试

效果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-25
#include <stdio.h>
#include <stdlib.h>

main()
{
FILE *fp;
char *filename = "c:\\file.txt";
float *p = (float*)malloc(sizeof(float)*800*800);
int i;

if((fp=fopen(filename,"r"))==NULL){
printf("Cannot open file.\n");
getchar();
exit(1);
}

for(i=0;i++<800*800;){
fscanf(fp,"%f",p++);
if(feof(fp))break;
}

printf("already read %d float.\n",i);
}
相似回答