簡體   English   中英

如何將 integer 寫入文件(fprintf 和 fwrite 的區別)

[英]how to write an integer to a file (the difference between fprintf and fwrite)

我一直在嘗試將 integer 寫入文件(打開模式為 w)。 fprintf 寫得對,但 fwrite 寫的是亂碼:

int length;
char * word = "word";

counter = strlen(word);
fwrite(&length, sizeof(int), 1, file);
fwrite(word, sizeof(char), length, file);

文件中的結果是:

單詞

但是如果我改用 fprintf ,就像這樣:

int length;
char * word = "word";

counter = strlen(firstWord);
fprintf(file, "%d", counter);
fwrite(word, sizeof(char), length, file);

我在文件中得到這個結果:

4字

誰能告訴我做錯了什么? 謝謝!

更新:我最終想將寫入更改為二進制(我將以 wb 模式打開文件),我的實現會有什么不同嗎?

fprintf寫入一個字符串。 fwrite寫入字節。 因此,在第一種情況下,您將代表 integer 的字節寫入文件; 如果其值為“4”,則這四個字節將在不可打印的 ASCII 范圍內,因此您不會在文本編輯器中看到它們。 但是如果你看一下文件的大小,它可能是 8 個字節,而不是 4 個字節。

使用printf()將 integer 轉換為一系列字符,在本例中為"4" 使用fwrite()會導致寫入包含 integer 值的實際字節,在這種情況下,字符'w', 'o', 'r','d'的 4 個字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM