请教c语言中将文件中的数据保存在二位数组中的问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 20:38:19
现在一个文件test.data中保存如下格式的数据
1 2 3 4 5
2 4 1 6 8
2 5 6 0 8
现在想要把这段数据保存在一个二维数组中,以便以后可以单独处理每一个数字
下面这段代码有什么问题吗?为什么就是不对呢?谢谢大家!test.data和程序文件在一个目录下。
#include "stdio.h"
int main()
{
FILE*fp;
int i,j;
int arr[3][5];
if((fp=fopen("test.data","rb"))==0) return 0;
for(i=0;i<3;i++){
fread(&arr[i],5*sizeof(int),1,fp);
for(i=0;i<3;i++){
for(j=0;j<5;j++){
printf("%5d",arr[i][j]);
}
printf("\n");
}
fclose(fp);
}

如果test.data中保存的数据是按读出来的反过程写入的话应该不会有错,但如果你直接用文本编辑器写入数字,那实际上是ASCII码。
还有,你的程序少了一个“}",在fread后面,fclose后面的括号你写成了中文类型(程序中应该使用西文符号),仿造你的程序我写了一个save函数写入数字,然后打开,经编译运行无错:

#include <stdio.h>

bool save(int arr[3][5])
{
FILE *fp;
int i;
if((fp=fopen("test.data","wb"))==0) return false;
for(i=0;i<3;i++)
{
fwrite(&arr[i],5*sizeof(int),1,fp);
}
fclose(fp);
return true;
}

int main()
{
FILE*fp;
int i,j;
int arr1[3][5]={1,2,3,4,5,2,4,1,6,8,2,5,6,0,8};
int arr[3][5];
if(save(arr1))
{

if((fp=fopen("test.data","rb"))==0) return 1; //注
for(i=0;i<3;i++)
{
fread(&arr[i],5*sizeof(int),1,fp);
}
for(i=0;i<3;i++)
{

for(j=0;j<5;j++)
{
printf("%5d",arr[i][j]);

}
printf("\