确定文件名。
打开文件,使用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.rowp->
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(啥时候矩阵,开始流行用链表做了!
行号
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)