gpt4 book ai didi

c++ - 使用 fwrite() 和 fread() 进行二进制输入/输出

转载 作者:行者123 更新时间:2023-11-28 07:09:39 33 4
gpt4 key购买 nike

我正在使用大量的 float 。经过大量摆弄后,我设法将其写入二进制文件。稍后打开该文件时,读取过程只读取几个 float (根据 fread() 的返回值,所有值都是 0.0f)。读数应该将 float 放入(原始)数组中,并且它不包含原始值。我正在使用 Code::Blocks 和 MinGW 在 64 位 pc 上的 32 位领域中执行程序。我对 c/c++ 和指针不是很精通。

#include<...>

const int mSIZE = 6000 ;
static float data[mSIZE*mSIZE] ;

void myUseFunc(){
const char *chN = "J:/path/flt_632_55.bin" ;
FILE *outFile=NULL ;
# .. sucessfully filling and using data[]
..
size_t st = mSIZE*mSIZE ;
outFile = fopen( chN , "w" ) ;
if(!outFile){ printf("error opening file %s \n", chN); exit(0);}
else{
size_t indt;
indt = fwrite( data , sizeof(float), st , outFile );
std::cout << "floats written to file: " << indt << std::endl ;
#.. value shows that all values ar written
# and a properly sized file has appeared at the proper place
}
fclose( outFile ) ;
}

void myLoadFunc( const char *fileName){
FILE *inFile = NULL ;
inFile = fopen( fileName, "r");
if(!inFile){ printf("error opening file %s \n", fileName); exit(0); }
size_t blok = mSIZE*mSIZE ;
size_t out;
out = fread( dataOne, sizeof(GLfloat), blok , inFile);
fclose(inFile);
if(out != blok){
std::cout<< out << std::endl ;
fputs ("Reading error",stderr);
# no stderr presented at the console ..
printf("some error\n") ;
exit(0);
# .. program exits at out=14
}
...
}

int main( ){
...
const char *FileName = "J:/path/flt_632_55.bin" ;
myLoadFunc( FileName ) ;
...
}

最佳答案

不是写入/读取二进制文件,而是将文件作为文本文件打开。

打开模式需要添加"b",如

outFile = fopen( chN  , "wb" ) ;

关于c++ - 使用 fwrite() 和 fread() 进行二进制输入/输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21216164/

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