繁体   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