ファイルからデータを読み込む際に問題があります。私は読書のときに< <を「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";
}
}
:
これは、私はより多くの情報を提供します必要であれば、私は、この質問に関連見つけるコードの一部です。
EDIT:私はSam Varshavchikをしてfcloseを取り出しました。それは入力された1回だけ表示されますが、ファイルの情報はまだ読み込まれません。 ファイルには、1人の出版社、1人のWriter、2冊の書籍があります。私は構造体に名前を書くだけで、それ以外はすべてインクリメントによって追加されます。あなたのwhile
ループの最初の繰り返しで This is a print of the file:
クラッシュしている場所にコード行を置くと便利です。実際にはループする必要はありません。 20個の要素の配列を書き、20個の要素の配列を読み込みます。 2番目のループがファイルの最後を読み取るため、クラッシュする可能性があります。 – Nathan
クラッシュするまで「入力中」を繰り返し続けます。 –
どのようにクラッシュしますか? –