编辑:好的,所以在我下面的帖子的帮助下,我得到了编译。我将将文件读入数组的行更改为:
input->read((char*)( &(zip[i].postalCode) ), sizeof(int ));
input->read((char*)( &junk ), sizeof(int ));
input->read((char*)( &(zip[i].longitude) ), sizeof(double ));
input->read((char*)( &(zip[i].latitude) ), sizeof(double ));
cout << "Currently at position" << input->tellg() << endl;
现在我让它通过循环的第一次迭代,但随后出现分段错误。
Currently at position24
Segmentation fault (core dumped)
原帖如下:
我又回来了。A 有一个结构和几个函数:
struct zipType{
int postalCode;
double longitude;
double latitude;
};
void zipToCout(zipType zip){
cout << "Postal Code = " << zip.postalCode << "\tLongitude = " << zip.longitude << "\t\tLatitude = " << zip.latitude << endl;
}
void binRead(zipType *zip[], fstream *input){
int junk;
int count;
int end;
input->seekg(0,ios::end);
end=input->tellg();
count=input->tellg()/24;
input->seekg(0);
while(input->tellg()!=end){
for(int i=0;i<count;i++){
input->read((char*)( &zip[i]->postalCode ), sizeof(int ));
input->read((char*)( &junk ), sizeof(int ));
input->read((char*)( &zip[i]->longitude ), sizeof(double ));
input->read((char*)( &zip[i]->latitude ), sizeof(double ));
cout << "Currently at position" << input->tellg() << endl;
//zipToCout(*zip);
}
}
}
现在,我主要创建了一个zipType[n]
其中 n 是 .bin 文件中 zipType 的数量。然后我打电话binRead(&testZipType[n],&testFile);
。这给了我一些你可以想象的错误。我收到一些与此类似的错误:
zipType.cpp:22:32: error: base operand of ‘->’ has non-pointer type ‘zipType’
input->read((char*)( &zip[i]->postalCode ), sizeof(int ));
我需要做的是浏览文件并将结构的每个部分存储在数组的适当部分中。我试图做尽可能少的改变来完成这项工作。我知道你们中的一些人可以 *<@LD(#) 走向荣耀,但我还没有到那里,希望能够阅读我的代码。另外,我需要对数组进行 qsort 以按升序对其进行排序(我还没有尝试过,如果你能在第一部分帮助我,我会自己试一试。)谢谢你的帮助!希望很快我就能在这里回馈一点!