【发布时间】:2021-03-24 15:59:33
【问题描述】:
我有一个 long 值数组,我想将它们保存到一个名为“Longs.myData”的文件中。我希望我的文件大小为 24 字节,因为该数组只有 3 个索引。但是,我得到一个 192 字节的文件。有没有办法保存我的数据并获得一个占用 24 个字节的文件? P.S 我知道将文件保存为 .txt 文件大小为 33 个字节。谢谢!
#include <stdio.h>
#include <stdlib.h>
void CreateFile()
{
//Array containing my data
long data[3];
data[0] = 2147483644;
data[1] = 2147483645;
data[2] = 2147483646;
//Initializing a pointer to FILE
FILE *myFilePointer;
//Creating a new file "Longs.myData"
myFilePointer = fopen("Longs.myData", "wb");
//Error handling
if(myFilePointer == NULL){exit(1);}
//Save array to file
fwrite(data, sizeof(long), sizeof(data), myFilePointer);
//sizeof(long) = 8, sizeof(data) = 24 //Total 192
printf("%d %d \n", (int) sizeof(long), (int) sizeof(data));
fclose(myFilePointer);
}
int main()
{
CreateFile();
return 0;
}
【问题讨论】:
-
fwrite()将写入 x 项数据,每个 y 字节大小。sizeof(data) == sizeof(long)*3,因此您有效地将sizeof(long) * sizeof(long) * 3字节写入文件,这可能会或可能不会出现段错误。 -
这个question / answer 解决了这个话题。如果我错了,请纠正我。
标签: arrays c file file-io save