CFile 讀取和寫入二進位檔案的問題

發布 科技 2024-04-16
6個回答
  1. 匿名使用者2024-02-07

    不要使用 cstring,cstring 的字元長度未知,因此讀寫困難。 您可以看到 sizeof(game) 的值是多少。

    讓我們只使用乙個 char 型別的陣列。

  2. 匿名使用者2024-02-06

    除錯除錯以檢視錯誤所在。

    cfile file;,cfile::typebinary|cfile::moderead|cfile::

    sharedenynone|cfile::modenotruncate|cfile::modecreate);

    game g;

    sizeof(game));

    cstring temp;

    temp=;

    messagebox(temp);

    sizeof(game));

    出書是錯誤的價值觀。

    建議你看一下物件的永續性。

  3. 匿名使用者2024-02-05

    在 C 語言中讀取二進位檔案是使用 fread 和 fwrite 完成的。

    fwrite() 與 fprintf() 不同。

    fwrite 將寫入的資料儲存為檔案的磁碟內容。 fprintf 將寫入資料的每個字元的 ASCII 程式碼儲存為檔案的磁碟內容。 fprintf 做了乙個轉換工作。

    當乙個檔案被開啟時,記事本會自動將檔案的磁碟內容轉換為相應的字元作為ASCII碼,然後顯示它,即顯示的是文字內容而不是磁碟內容。

    例如,如果使用 fwrite 將“65”寫入檔案,則該檔案的磁碟內容是儲存的 65(在磁碟上表示為二進位檔案)。 使用記事本開啟檔案時,記事本讀取 65 並將 65 視為 ASCII 程式碼,並顯示相應的字元“A”。 因此,螢幕上看到的文字內容為“a”。

    使用 fprintf 將 65 寫入檔案時,字元 6 和 5 對應的 ASCII 程式碼儲存在檔案的磁碟內容中,分別為 54 和 53。 因此,檔案的磁碟內容為 54 和 53。 當您使用記事本開啟檔案時,當記事本顯示 54 時,它會顯示相應的“6”。

    再次讀取 53,顯示相應的“5”。

  4. 匿名使用者2024-02-04

    由於資料結構是。

    資料的長度(必須是 int)+ 資料的內容(可以是 char)以二進位資料流的形式儲存到各自的檔案中。

    例如,然後考慮用 fread 讀取長度,然後用 fread 讀取資料段。

  5. 匿名使用者2024-02-03

    這是正常現象,這是作業系統的快取在起作用。

    快取:用於解決 CPU 速度和記憶體速度之間的差異(CPU 計算速度比記憶體快得多)。

    當程式需要讀取乙個檔案時,其實是把資料讀進記憶體中由CPU進行計算,CPU先去快取找,如果找不到,就會去記憶體讀取並複製到快取中進行下次訪問,這個時候, 速度自然很慢,當你第二次讀取檔案時,快取已經存在,CPU再次訪問資料會變得非常快。

    這與系統讀取資料的方式有關,而不是因為函式效率低下,顯然:

    如果搜尋某個磁碟下的檔名,第一次會慢一些,第二次會快很多,因為CPU第二次需要處理的資料已經儲存在快取中,處理效率會非常高。

  6. 匿名使用者2024-02-02

    當知道某個函式的引數不會被修改時,就可以使用 tst 來修改引數,這樣做的好處是可以防止無意中修改不想修改的引數,並且修改 const 物件可以在編譯過程中發現錯誤。

    比如這個寫入函式中的緩衝區,從這個記憶體中讀取資料,然後寫入檔案,這個記憶體中的資料絕對不會改變,所以加乙個sink,保證它不會被修改,防止你緊張的時候喝醉了,無意中修改了它,也就是說, ST是為了防止自己犯錯誤。write 函式中的 const 是 write 函式的作者為了防止自己犯錯而新增的,這是一種習慣,呼叫方看到 const 就知道這個引數是唯讀的,如果這個引數發生變化,肯定不會是這個函式引起的。 幾乎所有的 C C++ 庫都遵循這個習慣。

    不能將 read 引數新增到 const,因為這是從檔案中讀取資料寫入緩衝區的,因此緩衝區不能是唯讀的。

相關回答
13個回答2024-04-16

房東,你只是忘了關閉它,你的程式不需要大修。 >>>More

8個回答2024-04-16

1.二進位 1000 替換為 16。

用8421的轉換方法,即從左到右,8*1+4*0+2*0+1*0=0x8,這是所有十六進製到二進位、位到位對齊轉換的通用轉換方法,分別乘以8421,然後加起來。 如果二進位數。 >>>More

12個回答2024-04-16

什麼是基本系統?

如果它不是小數點: >>>More

10個回答2024-04-16

如果它是一種方法,我可以給你乙個自然語言描述,說明如何將十進位整數部分 n 轉換為二進位,如下所示: >>>More

9個回答2024-04-16

#include

using namespace std; >>>More