我用c++写了一个 Book的结构体,想要把Book的信息存入文件中,利用fwrite向文件
中写入的时候,我循环了100次,也就是向文件中存入了100本书,可是往外读取的时候,
前25本正常,后面就乱了,是在搞不明白哪里出问题了,但是在linux下运行正常。以下是代码,其中save()为文件操作
void addBooksByBatch(int k) {
for (int i = 1; i < k; i++) {
BookInfo bookInfo;
sprintf(bookInfo.name, "%d", i);
sprintf(bookInfo.writer, "%d", i);
sprintf(bookInfo.press, "%d", i);
bookInfo.ISBN = i;
bookInfo.price = 20;
bookInfo.exist = 1;
save(bookInfo, 5);
}
}
void save(BookInfo bookInfo, int num) { //num表示书的本数
FILE *bookFile = fopen("book", "ab+");
fseek(bookFile, 0, SEEK_END);
int position = ftell(bookFile);
bookInfo.index = position;
Book book;
book.exist = 1;
book.flag = 1;
for (int i = 0; i < num; i++) {
book.callnumber = bookInfo.ISBN * N + i;
if (i == num - 1) {
book.next = -1;
}
else {
book.next = position + BOOK_SIZE;
}
fwrite(&book, BOOK_SIZE, 1, bookFile);
position = ftell(bookFile);
}
fclose(bookFile);
FILE *bookInfoFile = fopen("bookinfo", "ab+");
fwrite(&bookInfo, BOOKINFO_SIZE, 1, bookInfoFile);
fclose(bookInfoFile);
cout << "图书添加完毕" << endl;
}