c++ - 对于大小为 20 的 char[],如果我将 char 从 char[0] 输入到 char[7],然后将 char[] 写入文件,它会占用磁盘上的 20 个字节还是 8 个字节?
问题描述
这是一个示例代码
char text[20];
fstream file("temp.dat",ios::binary|ios::in|ios::out|ios::app);
cout<<"Enter the text: "<<endl;
cin>>text; //assuming text entered is elephant
// file write operation
file.write((char*)(&text),sizeof(text));
// file write operation done
因此,如果大小为 20 的 char 数组存储了 8 个字符长的单词“elephant”(char[0] 到 char[7]),那么从 char[8] 到字符[19]?此文本在磁盘上占用 8 个字节还是因为 char[] 大小为 20 个字节而在磁盘上占用 20 个字节?
解决方案
"elephant"(char[0] to char[7]),长度为 8 个字符
当一个人记得计算空终止符时,“大象”实际上是 9 个字符。
从 char[8] 到 char[19] 的其余 char[] 中存储了什么?
它们不会被流提取操作修改。如果它们之前没有被初始化,那么它们将保持未初始化状态,即它们将具有不确定的值。
该文本是在磁盘上占用 8 个字节还是在磁盘上占用 20 个字节,因为 char[] 的大小为 20 个字节?
write 的第二个参数是您写入的字符数。你通过了sizeof(text)
ie 20,因此你写了 20 个字符。
这就是文件的大小。占用磁盘多少空间取决于文件系统。
推荐阅读
- html - VUE:如何在一个文件中包含多个组件部分?
- vectorization - 在 Arrayfire 中扩展间隔数组
- r - 使用ggplot2在R中组合堆叠条形图和折线图的问题
- python - 多页 BeautifulSoup 脚本仅拉取第一个值
- jmeter - 如何仅在 Jmeter 的 HTML 报告中过滤自定义图表的结果?
- asp.net - 文件下载后如何重定向 ASP.NET Core MVC 部分视图
- django - 配置文件模型(扩展自定义用户模型)未在 django admin 中注册
- jenkins - 如何在 Jenkins 共享库中使用第三方库?
- unity3d - Unity 3D:将游戏对象实例化到父对象的特定位置
- android - 来自画廊的照片旋转 90 度和小问题