2013-10-10 106 views
0

我有一個結構:讀/寫結構中包含有數組/從二進制文件

typedef struct codeKey_s { 
    unsigned char shortest; 
    unsigned char longest; 
    unsigned char lengths[256]; 
    int table[256]; 
} codeKey_t; 

正如你可以看到我有值類型的靜態大小的數組。我的問題是當我保存時,然後從二進制文件中讀取它們都是空的。我看到其他人使用char *字符串工作,所以給了什麼?

這裏是我的讀/寫語句:

fwrite(codeKey, sizeof (codeKey_t), 1, file); 

codeKey_t* retCodeKey = (codeKey_t*)malloc(sizeof(codeKey_t)); 
fread(retCodeKey, sizeof(codeKey_t*), 1, readFile); 

回答

0

從TFM

On success, fread() and fwrite() return the number of items read or written. 

你只是想一次FREAD和fwrite;他們不保證他們在一個電話中完成。

另一個問題是時間 - 您是否在fwrite之後打開並fread文件,也許在關閉寫入文件句柄之前?如果是這樣,在讀取之前,您可能需要刷新寫入文件句柄。

更新 你調用FREAD錯誤

fread(retCodeKey, sizeof(codeKey_t*), 1, readFile); 

傳遞指針類型的大小爲size說法。

+0

啊是的,我的文件處理是正確的關閉和開放。我正在讀指針的大小,這是問題。謝謝! – DCKlingensmith

相關問題