怎么从dat文件中读取二位数组阿

jover0 2008-02-22 12:52:54
#include<stdio.h>
void main()
{
FILE *fp;
int i,j;
int l[6][6];
if((fp=fopen("l.txt","r"))==NULL) /*¼ÙÉèÎļþÃûÊÇarr.dat */
printf("Read error!!");
for(i=0;i<6;i++)
fread(l[i],6*sizeof(int),1,fp); /*¶ÁÈ¡Êý¾Ý*/
puts("The arrange is");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
printf("%d\t",l[i][j]);
putchar('\n');
}
}
文件中的数据
1 2 3 4 5 6
2 3 4 5 6 10
7 8 9 10 2 5
1 5 6 9 7 4
3 5 20 7 9 8
5 2 4 9 1 11


读取后的数据
540155953 540287027 171319349 540221490 540352564 808525878
941635338 824195360 540155952 822747189 908080416 924858656
856306720 840971552 540483632 171450425 540155957 540614708
825303089 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460

能帮我看一下着程序该怎么写吗?另外读取1024*1024个数据时总是死机,应该怎么写啊,谢谢了
...全文
165 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jover0 2008-02-22
  • 打赏
  • 举报
回复
问题解决了哈哈,感激不尽阿
manio 2008-02-22
  • 打赏
  • 举报
回复
#include <stdio.h>

int a[6][6];//here
int main()
{
FILE* fp;
int tmp;
int i,j;


fp = fopen("number.dat","r");
if ( fp == NULL )exit(-1);

for ( i=0; i<6; ++i ){
for ( j=0; j<6; ++j ){
fscanf(fp,"%d",&tmp);
a[i][j] = tmp;
}
}

for ( i=0; i<6; ++i ){
for ( j=0; j<6; ++j ){
printf("%d ",a[i][j]);
}
printf("\n");
}

system("pause");
}
manio 2008-02-22
  • 打赏
  • 举报
回复
内存不会不够的,内存不够还有虚拟内存嘛.
如果你在main函数内声明的数组,则是在栈内分配的内存,大小是受限的.你在函数外声明,那就是在堆上分配,就没有大小限制.

#include <stdio.h>


int a[6][6]; //here


int main()
{
FILE* fp;
int tmp;
int i,j;


fp = fopen("number.dat","r");
if ( fp == NULL )exit(-1);

for ( i=0; i<6; ++i ){
for ( j=0; j<6; ++j ){
fscanf(fp,"%d",&tmp);
a[i][j] = tmp;
}
}

for ( i=0; i<6; ++i ){
for ( j=0; j<6; ++j ){
printf("%d ",a[i][j]);
}
printf("\n");
}

system("pause");
}
jover0 2008-02-22
  • 打赏
  • 举报
回复
非常谢谢阿,还有一个问题,就是当数据量很大时,比如1024*1024个时,程序无法运行,是不是内存不够啊
manio 2008-02-22
  • 打赏
  • 举报
回复
fread一般用来读取结构体.
如果你文件中的每个INT之门是挨着的,并且之前用fwrite写入,那还可以考虑用FREAD.现在数据间有空隔有只是ASCII码,读出的必是无意义的东东嘛
manio 2008-02-22
  • 打赏
  • 举报
回复
#include <stdio.h>


int main()
{
FILE* fp;
int tmp;
int i,j;
int a[6][6];

fp = fopen("number.dat","r");
if ( fp == NULL )exit(-1);

for ( i=0; i<6; ++i ){
for ( j=0; j<6; ++j ){
fscanf(fp,"%d",&tmp);
a[i][j] = tmp;
}
}

for ( i=0; i<6; ++i ){
for ( j=0; j<6; ++j ){
printf("%d ",a[i][j]);
}
printf("\n");
}

system("pause");
}


number.dat
1   2   3   4   5   6 
2 3 4 5 6 10
7 8 9 10 2 5
1 5 6 9 7 4
3 5 20 7 9 8
5 2 4 9 1 11
jover0 2008-02-22
  • 打赏
  • 举报
回复
应该用什么来读啊,能不能指点一二阿,楼上的大哥
manio 2008-02-22
  • 打赏
  • 举报
回复
可不能用fread来读啊

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧