如何c语言打开二进制带状矩阵的.dat文件 15C

我需要从.dat文件中读取矩阵,然后进行相关运算。现在小白一个,完全不知道怎么做。现将.dat的描述如下。
1.数据文件的文件名后缀为.dat,形式为:文件名.dat;
2.数据文件中的数据均为二进制记录结构,因此必须使用二进制方式进行读取;
3.数据文件的结构,分为以下四个部分:
(1)文件标示部分,该部分用于存放数据文件的描述信息
结构如下(用C语言格式进行描述):

  typedef struct FileInfo {
         long int id;           // 数据文件标示
        long int ver;       // 数据文件版本号
        long int id1;       // 备用标志

} FILEINFO;

其中:
①id:为该数据文件的标识,值为0xF1E1D1A0
即为:十六进制的F1E1D1A0

②ver:为数据文件的版本号,值为16进制数据,

版本号 说明
0x101 系数矩阵为非压缩格式稀疏矩阵
0x102 系数矩阵为非压缩格式带状矩阵
0x201 系数矩阵为压缩格式稀疏矩阵
0x202 系数矩阵为压缩格式带状矩阵

③id1:为备用标志字段,暂时未用;

(2)矩阵描述部分:此部分中包括矩阵的阶数和上下带宽,如果是稀疏矩阵,则上下带宽值为0。
结构如下:

typedef struct HeadInfo {
long int n; // 方程组的阶数
long int q; // 带状矩阵上带宽
long int p; // 带状矩阵下带宽
} HEADINFO;

(3) 系数矩阵数据部分:该部分存放方程组系数矩阵中的所有元素
①如存贮格式为非压缩格式,则按行方式顺序存贮系数矩阵中的每一个
元素,元素总个数为n*n,每个元素的类型为float型;
②如果存贮格式是压缩方式,则同样是按行方式进行存贮,每行中只
放上下带宽内的非零元素,即每行中存贮的元素都为p+q+1个;

(4)右端系数部分:该部分存放方程组中的右端系数
按顺序存贮右端系数的每个元素,个数为n个,每个系数的类型为float型

3.数据文件说明:
(1)Dat61.dat 为非压缩带状方程组,阶数为15阶,该方程组供调试程序使用,该方程组的根都为1;
(2)Dat62.dat 为压缩带状方程组,阶数为20阶,该方程组供调试程序使用,该方程组的根都为1;
(2)Dat63.dat 为非压缩带状方程组,阶数在2000阶左右;
(3)Dat64.dat 为压缩带状方程组,阶数在40000阶左右;

1个回答

你应该找定义这个dat格式的人去要读写它的代码,这是他的工作职责。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
基于C语言的带状矩阵特征值计算
用幂法和反幂法计算带状矩阵的按模最大特征值和按模最小特征值
dat文件如何打开
是这样的,我想打开一个文件,名字为a01。然后没有后缀名,只是知道是二进制文件,但是不清楚结构,请问我怎么才能打开,有没有相应软件?
如何打开.dat文件
我的电脑上,有个文件是。dat文件结尾的,请问如何打开,因为这个文件里存的是我的密码和帐号(这 个.dat 文件是我上网之后自动产生的文件,用记事本格式打开,只能看到帐号,密码是乱码)我一时记不起密码了,所以嘛,想打打开看下,盼哪位高手给我解答啊,谢谢
如何打开.DAT文件
下载了RationalRose2003 破解文件rational_perm.dat ,结果不会打开安装,求助。
.dat文件如何打开?
本人有一个.dat文件,是等级考试系统中的一个文件,里面有这个系统的考试题,我怎样才能打开这个.dat文件?rn谢谢!
带状矩阵,对称矩阵,三角矩阵
对称矩阵重要公式:*(p+((k*(k+1)/2)+p1)*sizeof(int))= *(p+((p1*(p1+1)/2)+k)*sizeof(int)) 上三角矩阵重要公式:*(p+((n-k+1)*k+k*(k-1)/2+p1-k)*sizeof(int)) 带状矩阵重要公式:*(p+((2*b+1)*k-b+p1-k+b)*sizeof(int))
带状矩阵的特征值求解
北航数值分析第一次大作业:采用幂法和反幂法求带状矩阵的特征值,同时计算该矩阵的条件数和行列式
有关带状矩阵的一问!
带状矩阵(或称对角矩阵)用一维数组存储,应如何实现哩?help,please!能举例最好了,谢谢先~
C语言读取dat文件
C语言文件读写。针对dat文件的读写。 注意文件路径。
C语言,.dat文件储存
#includern#includern#includernstruct shoprn rn long date;rn int buy_money;rn int money;rn char style[10];rn int time;rn char place[50];rnrn ;rnstruct studentrn rnrn long end_date;rn long money;rn char sta;rn int time;rn char g_sta;rn char d_sta;rn int help_money;rn char place[50];rnrn ;rnint shopping(long date,int buy_money,char * style,char *place)rn rn FILE *fp,*fstudent;rn struct shop *a;rn struct student *stu;rnrn a=(struct shop *)malloc(sizeof(struct shop));rn stu=(struct student *)malloc(sizeof(struct student));rn a->date=date;rn a->buy_money=buy_money;rn strcpy(a->style,style);rn strcpy(a->place,place);rnrn if((fstudent=fopen("student.dat","rb+"))==NULL)rn rn printf("cannot open file student\n");rn return;rn rn if(fread(stu,sizeof(struct student),1,fstudent)!=1)rn rn printf("file read error!");rn rnrn if(stu->moneyg_sta=='Y') return 0;rn stu->time++;rn a->time=stu->time;rn stu->money-=buy_money;rnrn fclose(fstudent);rn fstudent=fopen("student.dat","wb+");rn fwrite(stu,sizeof(struct student),1,fstudent);rn free(stu);rn fclose(fstudent);rn if((fp=fopen("shop.dat","ab"))==NULL)rn rn printf("cannot open file shop\n");rn return;rn rn if(fwrite(a,sizeof(struct shop),1,fp)!=1)rn printf("file write error\n");rn fclose(fp);rnrnrn rnint main()rn rn long date=20130506;rn int buy_money=20;rn char *style="abcd";rn char *place="abcd";rn shopping(date,buy_money, style,place);rn return;rn rn就是想同时联系两个文件,让shopping发生时shop.dat文件中的time等于student.dat的time+1;同时student的time也加一.
Fortran求解带状矩阵
用Fortran语言求解带状矩阵。这个程序对学习电磁场有限元的朋友有较大用途。
DS:带状矩阵
// STACK.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #define N 6 #define W 3//带宽 int absolute(int i,int j) { if(i-j>0) return i-j; e
带状矩阵的压缩存储
对于n*n的方阵,若它的全部非零元素落在一个以主对角线为中心的带状区域中,这个带状区域包含主对角线 ,以及主对角线下面及上面各b条对角线上的元素,那么称该方阵为半带宽为b的带状矩阵。 带状矩阵的特点是:对于矩阵元素a(i,j)!=0,|i-j| 带状矩阵的存储空间为(2*b+1)*n-2*b。2*b+1为每一行所需空间,所以乘以n行,又因为第一行和最后一行之分配b+1个空间,所以公式中要减去2
请问如何打开dat文件?
如题!
矩阵的压缩存储--特殊矩阵--带状矩阵
矩阵的压缩存储–特殊矩阵–带状矩阵带状矩阵指矩阵中所有的非零元素都集中在以对角线为中心的带状区域中本篇以最常见的三对角带状矩阵为例,示例代码:#include <stdio.h> #include <stdlib.h> #define N 100 int a[N][N], sa[N*N]; int main(void) { int i, j, k; int n, m; pri
请问如何打开.dat文件
请问如何打开.dat文件,里面的内容是表格和曲线?
如何打开dat文件?急....
各位大虾,如何打开dat文件,不是VCD上的dat文件,是一种图纸以dat为后缀的文件。公司打不开此文件,客户的图纸看不见,焦急...help,up 者也有分。
如何编程实现打开dat文件?
用一般的文件操作函数打开txt等文件时,还是原样显示,因为它们是asc码格式文件,可是对于dat等文件,则不然,打开后则成乱码。rn 我想知道这里有没有办法,通过编程原样打开dat文件的内容??
dat后缀文件如何打开
我想把"历史上的今天"放在网页上,每天自动显示,想找个"历史上的今天数据库",搜索了半天,只有单机软件,它的数据在这个文件里,history.dat,记事本打开乱码,有什么好办法能转换成普通数据库吗?
C语言 十进制矩阵转换二进制
新手提问 读取文件中一组十进制的矩阵 转换成二进制的 rn例子:rn1 2 3rn4 5 6 变成 rnrn0001 0010 0011rn0100 0101 0110rnrnrn怎样在每个格子中存4位? 需要用到malloc函数和指针吗?rn求详细解答 (急!) rn
leetcode-1091. 二进制矩阵中的最短路径-C语言
/* * 算法思想: * bfs,从(0,0)开始广度优先搜索; * 相邻8个点均可以搜索; * 第一次搜索到(m-1, n-1)位置,当前即为最短的路径。 * Notes: * 广度优先搜索过程中,使用一个队列作为缓存。 */ typedef struct point{ int x,y,d; } Node; #define LEN 0xffff void print...
怎么打开*.dat文件?
rn请问各位大侠:rnrn 我这里有一个*.dat格式的文件,我用什么工具打开才能阅读这个文件呢?多谢各位指点迷经.
求带状矩阵的一维数组的寻址方式
这是个一半带状矩阵,两边不对称,从最下方的对角线开始,沿对角线方向顺序存储。rn比如D(4,3);rnd(2,0)d(3,1)d(1,0)d(2,1)....
打开.dat文件乱码
请问下各位大神,小弟有一.dat文件,打开后乱码,请问下如何才能用文本文件正常显示,我有源代码。谢谢
C语言文件二进制取反
C语言文件二进制取反。使用fread和fwrite。可以处理任意文件。
追赶法求解带状矩阵
带状矩阵方程组矩阵求解。 追赶法。 生成方程组的系数i u 及其除数i d ,事实上,按式(*)可交替生成i d 与i u :
C语言实现DAT文件可视化
用C来实现DAT文件可视化,得到bmp图像
C语言读DAT文件,fscanf的问题
#include rn#define Infolength 504rndouble Receive[Infolength * 2];rnvoid readDAT(char *File_Name,double *array, int Num)//File_Name的数据的double型带空格rn int i; rn FILE *fr;rnrn fr=fopen(File_Name,"r");rn for( i = 0; i < Num; i++)rn printf("i=%d_",i);rn fscanf(fr,"%le",&array[i]);rn printf("%le\t",array[i]);rn rn rn fclose(fr);rnrnrn此函数readDAT()单独在main函数中可以完美工作,,,,但是插入到一段代码中就会出现问题,数组array[847]以后的数据得不到!!rn请教各位大虾
C语言.dat文件储存问题
#includern#includernstruct studentrnrn char date[11];rn long money;rn int sta;rn int g_sta;rn int d_sta;rn int help_money;rn char personal[50];rna[2];rnint main()rnrn int i;rn FILE *fp;rn if((fp=fopen("student.dat","rb+"))==NULL)rn rn printf("cannot open file\n");rn exit(0);rn rn for(i=0;i<2;i++)rn rn fread(&a[i],sizeof(struct student),1,fp);rn /*a[i].sta=2; */rnrn printf("%-11s %ld %4d %4d %4d %4d %s\n",\rn a[i].date,a[i].money,\rn a[i].sta,a[i].g_sta,a[i].d_sta,a[i].help_money,a[i].personal);rn rn fflush(fp);rn fclose(fp);rnrnrn fp = fopen("student.dat", "wb+");rn fwrite(a, sizeof(struct student), 2, fp);rn fclose(fp);rn return 0;rnrn就是想同时联系两个文件,让shopping发生时shop.dat文件中的time等于student.dat的time+1;同时student的time也加一.
C语言读取和写入dat文件 代码
C语言读取和写入dat文件 注意路径 简单明了 仅供参考
怎样运用c语言读 *.dat文件?
怎样运用c语言读 *.dat文件? 拜请大虾们赐教
dat数据文件如何打开?
请帮忙,急!!!
如何打开.dat的数据库文件?
如何打开.dat的数据库文件?
如何打开*.DAT的数据库???????????????
打开*.DAT的数据库?????????????????rn打开*.DAT的数据库?????????????????rn打开*.DAT的数据库?????????????????rn打开*.DAT的数据库?????????????????rnrnrnrn 在线等等........
如何打开后缀为.dat 的文件呀
我想知道如何打开后缀为DAT的文件,这是在小盘里的一个文件,用来记录你看光盘的时间,它是同时与光盘一起放入,并开始记时间的。我很想打开看看到底记了什么内容,能不能修改呀rn谢谢拉!rn在线等待呢!!
.dat 是什么文件该如何打开?
-
各位大虾:.dll 和 .dat 的文件如何打开。
想了解这两类文件的内容怎么打开呢。
在windows中如何打开*.dat文件?
-
如何打开STK,Dat, Day格式的文件?
如何打开STK,Dat,Day的文件格式?二进制编辑器何处可以下载?
C语言编程:用二进制打开一个*dat文件,取出1K
求教高手用C语言编程:rn用二进制形式打开一个*dat文件,该文件一共有8K,从某个点开始,取出后面1K的内容,保存。请问用C/C++语言怎么实现?请教软件编程高手。求代码。
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池