用于存储整数的文件大小

时间:2014-03-16 06:28:35

标签: c++ string file integer

我想以减小文件大小的方式将一个整数(对于ex-222222)写入文本文件。如果我以字符串的形式写整数,则需要6个字节,因为存在六个字符。如果我以整数的形式存储整数,它又需要6个字节。为什么文件大小不等于4字节,因为int需要4个字节?

#include <iostream>
#include<stdlib.h>
#include<stdio.h>

using namespace std;

int main()
{
    //char* x = "222222.2222";
    //double x = 222222.2222;
    int x = 222222;
    FILE *fp = fopen("now.txt","w");
    fprintf(fp,"%d",x);
    return 0;
}

3 个答案:

答案 0 :(得分:3)

这背后有一个简单的原因。

每当我们写入文件时,它都存储在字符中。因此,当您将整数222222写入文件时,它将逐个字符地写入,而不是整数。

答案 1 :(得分:2)

以下是fprintf的定义:

writes the C string pointed by format to the stream. 

因此无论您传递给函数,它们都被视为string,即输出文件中都存有222222

如果您要在文件中存储integer而不是string,则可以使用:fwrite

int x = 222222;
FILE *fp = fopen("now.txt","w");
fwrite(&x, sizeof(int), 1, fp);

如果您将编辑器更改为十六进制模式,则文件存储:0E 64 03 00。它的 4 字节。

答案 2 :(得分:0)

当您将整数写为整数时,该文件将转换为二进制文件。

当您编写和阅读二进制文件时,需要处理paddingsbyte order等。 另一种方式是纯文本,你把它作为字符串读取,在图书馆的帮助下,我们将其转换为整数。