C语言之文件操作05——矩阵(数据)的读取方法

来源:互联网 发布:房屋三维设计效果软件 编辑:程序博客网 时间:2024/06/01 07:40
//数据读取
/*
===============================================================
题目:从test.txt中读出矩阵A,B,并计算它们的乘积,输出到屏幕!
===============================================================
*/
#include<stdio.h>
#define M 3
#define N 5
void main()
{
FILE *fp;
int a[M][N],b[N][M],c[M][M];
int i,j,k;
fp=fopen("D:\\test.txt","r");
if(fp==NULL)
printf("文件打开失败!\n");
else
{
//读入A,就像正常写入一样,把scanf换成fscanf
printf("读取矩阵A:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
fscanf(fp,"%d",&a[i][j]);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%3d ",a[i][j]);
printf("\n");
}

//读入B,就像正常写入一样,把scanf换成fscanf
printf("读取矩阵B:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
fscanf(fp,"%d",&b[i][j]);
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%3d ",b[i][j]);
printf("\n");
}
fclose(fp);
//二维矩阵的乘法
printf("矩阵A与B乘积:\n");
for(i=0;i<M;i++)
for(j=0;j<M;j++)
{
c[i][j]=0;
for(k=0;k<N;k++)
c[i][j]+=a[i][j]*b[j][i];
}
//输出
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%5d ",c[i][j]);
printf("\n");
}
}
}
/*
========================================================================
评:

二维数组的读取实际上还是一个一个的取出数字,即a[i][j];fscanf(fp,"%d",&a[i][j]);另外要注意读

出时用“r”!保存数据时尽可能不要参杂其他字符,一组数据用一个文件单独保存,以保证数据的可

读性。

========================================================================

*/




1 0