C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。相关的知识,希望对你有一定的参考价值。

文件中是以“行号、列号、数据”的形式存放的数据,我会用数组做,用链式存储怎么做呢?

啥时候矩阵,开始流行用链表做了!
行号、列号、数据还可以这样存储矩阵!

一般都是行数,列数,数据这样存储的。
你这个不会是稀疏矩阵吧!
typedef struct

int row,col;
double d;
matdata;
typedef struct struMatNode
matdata md;
struMatNode *pre,*nxt;
MatNode,*PMatNode;

typedef struct strucSparseMat

int m,n;
int count;
MatNode head;
SparseMat;

matdata
*readdata(FILE *fp,matdata
*md)
if(!fp)return NULL;
if(feof(fp) && !md)return NULL;
fread(md,1,sizeof(md),fp);
return md;

读矩阵,要看情况了,如果储存了,矩阵每个维度的大小自然先读出来,如果数据个数也储存了就最好了。
SparseMat *readMat(FILE *fp, SparseMat *sm)

int i; PMatNode p;

if(!fp)return NULL;
if(feof(fp))return NULL;
if(!sm)return NULL;

fread(&m,1,sizeof(n),fp);
fread(&n,1,sizeof(n),fp);
fread(&count,1,sizeof(count),fp);

p=&sm->head;
p->next=p->pre=NULL;//p;
for(i=0;i<count && !feof(fp);i++)

if(!readdata(fp,sm->head.md)
break;

else

p->next=(PMatNode)malloc(sizeof(MatNode));
p->next->pre=p;
p->next->next =NULL;//&sp->head;
p=p->next;
//p->md=sm->head.md;
p->md.row=sm->head.md.row;
p->md.col=sm->head.md.col;
p->md.d =sm->head.md.d;



sm->count=i;
return sm;
参考技术A 你可以用动态分配内存啊,
用sizeof
mollce
你好、希望能帮到你哈!追问

拜托可以说详细点不?

C语言怎样将数字从文件里逐个读取出来

文件里是这样的数字,怎样逐个读取出来并相加

可以通过fscanf,从文件中依次读取数据。
当fscanf返回EOF时,表示读到文件结尾,这时停止读取即可。
以文件中存储的为空格分隔的整型字符为例,可以写作:
while(fscanf(fp,"%d",&n) != EOF)//从打开的文件指针fp指向的文件读数据,每次读一个整型,直至文件结尾。
printf("%d ", n);
参考技术A 读取想要的数据要根据文本内容具体来实现,要是你图中的格式的话就简单了,只需要一行一行的读就可以了,每读一行进行一次数据转换,要是每行中有不同的数据,就要进行一些分析,不需要的直接就不用管 参考技术B #include <stdio.h>
void main()

FILE *fp=fopen("data.txt","r");
int sum=0,x=0;
while( fscanf(fp,"%d", &x ) ==1 )

sum += x ;

fclose(fp);
printf("sum=%d\n", sum );
本回答被提问者采纳

以上是关于C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。的主要内容,如果未能解决你的问题,请参考以下文章

使用指针符号从矩阵中读取数据

C语言怎样将数字从文件里逐个读取出来

如何读取MATLAB的CELL类型数据中的值?

matlab图像显示及保存

数字图象处理之读取显示——Matlab读取三维mat数据并灰度显示

C语言如何读取文件?