[英]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.