《C语言》中如何从文件读取矩阵?

《C语言》中如何从文件读取矩阵?,第1张

确定文件名。

打开文件,使用fopen函数。fopen("文件名", “r”)。

根据约定的文件格式,包括文件中矩阵规模,元素的类型,以及元素分隔的符号,采用fscanf函数循环读入矩阵。

判断文件是否读完,如未读完,重复第三步直到读完。

关闭文件。

C语言的优点:

简洁紧凑、灵活方便,C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行 *** 作, 而这三者是计算机最基本的工作单元。

运算符丰富 ,C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

数据结构丰富 ,C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

1),使用fopen函数打开指定txt文件。

2),根据矩阵的空格符和换行符,使用一个循环whilte(scanf()!=EOF)分别读取每行数据。

3),读取的过程当中,记录该矩阵的行数(换行符),列数(空格符)。

4),根据需要,把矩阵放入一个一维数组或者二维数组当中。

md.row

p->

return

sm

}

}

sm-&gt,col,列数,数据这样存储的。

你这个不会是稀疏矩阵吧!

typedef

struct

{

int

row,矩阵每个维度的大小自然先读出来.d

=sm->

for(i=0md=sm->

p->mdhead.md

typedef

struct

strucSparseMat

{

int

mhead

p=p->

return

md

}

读矩阵,如果储存了count=ihead.mdp,如果数据个数也储存了就最好了。

SparseMat

*readMat(FILE

*fp,fp)next->next

=NULLnext=p->pre=NULL,fp),sizeof(n)

MatNode

head.dnext=(PMatNode)malloc(sizeof(MatNode))

p->head.md){

break

}

else

{

p-&gt,n

int

count,fp)

p->md

fread(&n,1,sizeof(n),fp)

fread(&count.col

typedef

struct

struMatNode{

matdata

md//

}SparseMati++)

{

if(!readdata(fp,sm-&gt!fp)return

NULL

if(feof(fp)

&&

p=&sm->headmd.col=sm-&gt!md)return

NULL

fread(md,1,sizeof(md)head.md,*PMatNodep-&gt.row=sm->head

if(feof(fp))return

NULL

if(,

SparseMat

*sm)

{

int

i

PMatNode

p

if(!fp)return

NULLnext

//&sp->

}MatNode,要看情况了

double

d

}matdata,sizeof(count),1//i<count

&&

!feof(fp)next->pre=p

p-&gt,1、列号、数据还可以这样存储矩阵!

一般都是行数

p-&gt!sm)return

NULL

fread(&m

struMatNode

*pre,*nxt

matdata

*readdata(FILE

*fp,matdata

*md){

if(啥时候矩阵,开始流行用链表做了!

行号


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11616589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存