我有這個函數返回一個指向這個函數內已分配書籍的指針,並且這個數據來自一個名爲book_saved.dat的文件。我可以編譯這段代碼,但它會給我發垃圾,爲什麼?讀取一個文件並返回一個指針C
book_saved是一個已經存在
*我在我的原代碼結構的文件。
#include <stdio.h>
#include <stdlib.h>
book_t *book_load(){
book_t *book;// book_t is a struct
book = (book_t*)malloc(sizeof(book_t));
if (book == NULL)
exit(1);
FILE*fp = fopen ("book_saved.dat", "rb");
fread (book, sizeof(book_t), 1, fp);
return book;
}
void print_book (book_t *book) {
printf("\n");
printf ("Book \nTitle: %s\nWriter: %s\nPublishing: %s\nYear: %d\nWeight %.1f\n", book->title, book->writer, book->publishing_house, book->year, book->weight);
}
int main (int argc, char *argv[]){
book_t *pontaux = book_load();
print_book (pontaux);
free (pontaux);
return 0;
}
'book_saved.dat'文件來自哪裏?您是使用其他程序製作的,還是使用文本編輯器手動輸入的? – dasblinkenlight
我做了一個寫而不是讀的程序。 – Kay
是否是book_t char指針或數組的成員? –