2014-12-03 39 views
1

我有以下結構:從C中的內存讀取結構數據?

struct entry 
{ 
    int next; 
    int EOC; 
} entry; 

創建結構的實例,並設置其「下一個」和「平機會」值。因此,我寫的結構來通過C fwrite的功能的文件之後。我現在想從該文件中讀取'next'和'EOC'的值。我的問題是:這兩個int變量如何存儲在內存中?一旦我調用fseek將文件指針移動到文件中的正確字節,我會讀取多少字節來獲取'next'或'EOC'的值?

回答

4

如果你讀它,然後將文件在同一臺機器上寫着:

  • 你寫與fwrite(&entry, sizeof(entry), 1, fp)
  • 您使用fread(&entry, sizeof(entry), 1, fp)閱讀。

你寫的大小是結構的大小;你讀的大小是結構的大小。你測試返回值;根據我寫的內容,它們可以是0或1,0表示在這種情況下出現問題和成功。

如果您的文件在讀寫時打開,寫完後,您可以通過sizeof(entry)向後尋找然後閱讀。

如果你的文件是寫在不同類型的機器上,那麼你可能不得不擔心基本數據類型的大小和兩個系統的字節順序的不同以及更復雜的結構,您可能不得不擔心打包和對齊規則。有處理這些問題的方法(並且它們比單個fwrite()fread()調用更復雜)。

+1

如果您與您的祖父大型機進行互操作,您可能還擔心負整數的佈局! – Persixty 2014-12-03 08:29:11

+0

這正是我所期待的。謝謝! – 2014-12-03 23:33:00