将matlab文件改为C++的,读取经纬度,用fread函数读取,但是只有一部分数据是正确的。代码和截图见下面 20

数据文件分别为latitude.dat和longitude.dat。fid1=fopen('longitude.dat','r');mLon=fread(fid1,[14... 数据文件分别为latitude.dat和longitude.dat。
fid1= fopen('longitude.dat', 'r');
mLon=fread(fid1, [14776, 1], 'float32');
fclose(fid1);

fid1= fopen('latitude.dat', 'r');
mLat=fread(fid1, [16901, 1], 'float32');
fclose(fid1);

然后我在VC里改的是这样

FILE *pFlon=fopen("longitude.dat","r");
if(pFlon==NULL)
{
return;
}
float londata[14776];
fread(londata,sizeof(float),14776,pFlon);
fclose(pFlon);

FILE *pFlat=fopen("latitude.dat","r");
if(pFlat==NULL)
{
return ;
}
float latdata[16901];
fread(latdata,sizeof(float),16901,pFlat);
fclose(pFlat);
我在最后一句处设置断点,结果发现有问题

而且latdata和londata数据后半部分都不对

求解答,多谢各位!
展开
 我来答
xa871114
2015-03-18
知道答主
回答量:17
采纳率:0%
帮助的人:8.7万
展开全部
肯定会这样,fread取到的值放到latdata和londata数组,但是你文件中取得数的个数少于数组长度,加上你数组未作初始化,导致后面的数是未知的
更多追问追答
追问
为什么说取得数的个数少于数组长度?
fread里读取次数我设置的和数组长度一样啊....
求解答
追答
你理解错我的意思了,我说的是文件中的float型数的总个数小于你定义的数组长度,所以有部分是正确的,就是从文件获取得到的,但是文件读取完毕后,数组还有一部分没有赋值,就给他一些随机数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式