首页 > 解决方案 > 对于大小为 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 个字节?

标签: c++arrays

解决方案


"elephant"(char[0] to char[7]),长度为 8 个字符

当一个人记得计算空终止符时,“大象”实际上是 9 个字符。

从 char[8] 到 char[19] 的其余 char[] 中存储了什么?

它们不会被流提取操作修改。如果它们之前没有被初始化,那么它们将保持未初始化状态,即它们将具有不确定的值。

该文本是在磁盘上占用 8 个字节还是在磁盘上占用 20 个字节,因为 char[] 的大小为 20 个字节?

write 的第二个参数是您写入的字符数。你通过了sizeof(text)ie 20,因此你写了 20 个字符。

这就是文件的大小。占用磁盘多少空间取决于文件系统。


推荐阅读