程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 文件存儲-window下 c++向文件中存入多條記錄時出現異常

文件存儲-window下 c++向文件中存入多條記錄時出現異常

編輯:編程綜合問答
window下 c++向文件中存入多條記錄時出現異常

我用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;

}

最佳回答:


你這是按二進制格式讀寫,修改下面兩句話就行了。

    FILE *bookInfoFile = fopen("bookinfo", "wb");


        FILE *p = fopen("bookinfo","rb");


gyn1132781055
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved