C语言之文件操作05——矩阵(数据)的读取方法
2015-08-18 19:48
661 查看
//数据读取
/*
===============================================================
题目:从test.txt中读出矩阵A,B,并计算它们的乘积,输出到屏幕!
===============================================================
*/
#include<stdio.h>
#define M 3
#define N 5
void main()
{
FILE *fp;
int a[M]
,b
[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”!保存数据时尽可能不要参杂其他字符,一组数据用一个文件单独保存,以保证数据的可
读性。
========================================================================
*/
![](http://img.blog.csdn.net/20150818194929379)
/*
===============================================================
题目:从test.txt中读出矩阵A,B,并计算它们的乘积,输出到屏幕!
===============================================================
*/
#include<stdio.h>
#define M 3
#define N 5
void main()
{
FILE *fp;
int a[M]
,b
[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”!保存数据时尽可能不要参杂其他字符,一组数据用一个文件单独保存,以保证数据的可
读性。
========================================================================
*/
相关文章推荐
- 此C语言功能---A
- 使用tinyxml解析XML配置文件
- 猜数字游戏v2.0[C语言][自制]
- C++11随机数发生器 VS rand()
- 洛谷1001 A+B Problem
- 【vijos P1010】清帝之惑之乾隆 c++题解
- 键盘小钢琴[C语言][自制]
- 猜数字小游戏[C语言][自制]
- Accelerated C++ 学习笔记2
- C++逐行读取文本文件的正确做法
- C++逐行读取文本文件的正确做法
- c语言发挥帕斯卡三角
- C++ Primer : 第十章 : 泛型算法 之 只读、写和排序算法
- C语言 输入年月日判断是第几天
- C/C++程序题之三天打渔两天晒网
- 《C/C++学习指南》 - 关于本书
- C++:实现split分割字符串 - 改进
- C++出错提示英汉对照表
- Effective C++ 条款7 为多态基类声明virtual析构函数
- iOS基础_C语言第一讲