我想以减小文件大小的方式将一个整数(对于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;
}
答案 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)
当您将整数写为整数时,该文件将转换为二进制文件。
当您编写和阅读二进制文件时,需要处理paddings,byte order等。 另一种方式是纯文本,你把它作为字符串读取,在图书馆的帮助下,我们将其转换为整数。