gpt4 book ai didi

c++ - matlab和c/cpp之间的fwrite和fread

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:47 26 4
gpt4 key购买 nike

当我在 MATLAB 中使用 fwrite 保存一个包含 460 个元素的变量时,我遇到了问题,当我尝试在 MATLAB 中读取时,它很好,但是尝试在 Visual C 中使用 fread 访问同一个 bin 文件时,前 88 个值的结果很好左右,但随后它经历了 EOF 左右,例如它没有为其余元素提供所需的结果。用于 Visual C 的代码如下所示。

虽然在过去的某个论坛上也有人问过这个问题,但答案并没有解决问题。

void main() 
{
FILE *p;
long lsize;
float *temp;
int i;
size_t nn;
// Name of file
printf("Open File: r0.bin ");
p = fopen("r01.bin", "r");
// Determine the size of file
fseek (p, 0 , SEEK_END);
lsize = ftell (p);
rewind (p);
// Allocate memory
int a=sizeof(float);
lsize /= a;
temp = (float*) malloc (a*lsize);
// Reading the file
nn= fread(temp,a,lsize,p);
// printing the results
for (i=0;i<lsize;i+=4)
printf("\n %g %g %g %g",temp[i],temp[i+1],temp[i+2],temp[i+3] );
getch();
fclose(p);
}

最佳答案

Windows,对吗?文件默认以文本模式打开,字节 26 被解释为 EOF 标记。将 fopen 重写为 fopen("r01.bin", "rb") 以强制以二进制模式打开文件。

关于c++ - matlab和c/cpp之间的fwrite和fread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6340467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com