求助vc读dat文件

wangruihit 2010-05-15 10:37:37
我在matlab中有一个mat格式的复数矩阵,我想将其中的数据分实部与虚部分别写入dat文件

代码如下:

load comImageM
fid=fopen('mycom.dat','w')
fwrite(fid,comImageM,'double')

我的comImageM文件是320*320的矩阵,运行上述代码后显示写入了102400个数据。所以应该是正确的。

可是我在vc中读取的时候,前几个数据是对的,后来就不对了,所以的数都成了相同的一个负数。不知为何,求解。

vc代码如下:


int i,j;
double mycom[100][100];
CString strFilter;
strFilter = "Data Files|*.dat|";
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST, strFilter);

if(IDOK != dlg.DoModal())
return;

FILE *fp1= fopen(dlg.GetPathName(),"r");
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
fread(&mycom[j][i],sizeof(double),1,fp1);
}
}

fclose(fp1);
DoubleMessageBox(mycom[0][0]); // DoubleMessageBox() 是我自己定义的一个显示double类型的对话框


mycom[0][0]的数据是正确的,一直到mycom[49][0]都是正确的,再往后就变成了同一个数。
...全文
288 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfrog 2010-05-15
  • 打赏
  • 举报
回复
有可能 用new动态分配吧 VC6里面stack的默认大小貌似也就1M左右的样子
wangruihit 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zfrog 的回复:]
FILE *fp1= fopen(dlg.GetPathName(),"r");
这把后面的"r"改成"r+b"试试 你把二进制文件按文本方式来读 可能会有问题 因为文本方式读到某些特殊符号会中止
[/Quote]

谢谢。我试了下,确实应该加b。

现在读100*100个数没问题了,但是我想读320*320的数却提示stack overflow,是我定义的

double mycom[320][320]太大了吗?
wangruihit 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arong1234 的回复:]
从尺寸看,似乎是确实写进去了那么多数据。但是既然读的都是不合理的值,首先怀疑matlab写的数据到底对不对。建议在matlab里先载入一下,看看数据载入后对不对
[/Quote]

我在matlab里用type命令显示乱码,用load提示失败。
wltg2001 2010-05-15
  • 打赏
  • 举报
回复
我怀疑是写入时的问题。
zfrog 2010-05-15
  • 打赏
  • 举报
回复
FILE *fp1= fopen(dlg.GetPathName(),"r");
这把后面的"r"改成"r+b"试试 你把二进制文件按文本方式来读 可能会有问题 因为文本方式读到某些特殊符号会中止
arong1234 2010-05-15
  • 打赏
  • 举报
回复
从尺寸看,似乎是确实写进去了那么多数据。但是既然读的都是不合理的值,首先怀疑matlab写的数据到底对不对。建议在matlab里先载入一下,看看数据载入后对不对
wangruihit 2010-05-15
  • 打赏
  • 举报
回复
正好是320*320*8
wangruihit 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
你写入文件后,文件的尺寸多少?
[/Quote]

是819200字节
wangruihit 2010-05-15
  • 打赏
  • 举报
回复
我不知道错误是出在哪儿了,是在写dat文件那块,还是在读dat文件那儿。
arong1234 2010-05-15
  • 打赏
  • 举报
回复
你写入文件后,文件的尺寸多少?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧