我在加载文件中的数据时遇到了麻烦。在读取时,我已经将“输入while循环”,并且它一直重复直到崩溃,而不显示文件的任何数据。从二进制文件中读取结构
这是我发现有关此问题的代码的一部分,如果需要的话,我会提供更多的信息:
struct Book
{
char name[50];
int bookID;
};
struct Writter
{
char name[30];
int writterID,
bookAmount;
struct Book book[20];
};
struct Publisher
{
char name[20];
int publisherID,
qtAutor;
Writter writter[30];
};
Publisher publisher[20];
void savingData(){
fflush(stdin);
if((arquivo = fopen("contact.dat","wb+")) !=NULL){
cout<<"It enters the write part"<<endl;//just checking if it enters the write part
fwrite(&publisher,sizeof(publisher),1,arquivo);
fclose(arquivo);
}
else{
cout<<"Error: file cannot be opened";
}
}//savingData
void loadingData(){
fflush(stdin);
if((arquivo = fopen("contact.dat","rb+")) !=NULL){
while(!feof(arquivo)){
fread(&publisher,sizeof(publisher),1,arquivo);
if(!feof(arquivo)){
cout<<"Entered the while loop";
}//if
}//while
fclose(arquivo);
}//if
else{
cout<<"Error: file cannot be opened";
}
}
我希望我没有忘记任何翻译。
编辑:我做了什么山姆Varshavchik,并把fclose了。它只输入一次,但文件上的信息仍未加载。 在文件上我有1个发布者,1个Writer和2本书。我只在结构上写上名字,其他的都是按增量加入的。 This is a print of the file:
它可能有助于将代码行放置在崩溃的位置。它不需要实际循环。你写一个20个元素的数组并读取一个20个元素的数组。它可能会崩溃,因为第二个循环尝试读取文件的末尾。 – Nathan
它一直重复“输入while循环”直到崩溃。 –
它如何崩溃? –