首页 文章

如何在C中将long写入二进制文件?

提问于
浏览
-1

我有一个long数组,我想将每个元素写入二进制文件 . 我知道你使用 write() 来写二进制文件,但 write() 接受两个参数:一个指向char数组(缓冲区)的指针和一个数字 . 由于我有一个longs数组,我无法使用 write() 编写 . 我甚至尝试将指向long int数组的指针直接传递给第一个参数,但它产生了编译器错误 .

这是我正在尝试做的一个例子:

long* arr = new long [999999];

// imaginary code that fills arr with data

file.write(arr,1000000);

How can I write my array of longs into a binary file? 我已经考虑过以某种方式将longs转换成chars,但是我怀疑它会起作用,并且在数据类型之间进行转换时可能会有精度损失 . 另外,当我编译代码时,编译器错误留下了这个注释:“ no known conversion for argument 1 from 'long int*' to 'const char*' ” .

谢谢你的帮助 .

1 回答

  • 3

    不,这正是你应该做的:

    const size_t N = 999999;
    long* arr = new long[N];
    file.write((const char*)arr, sizeof(long)*N);
    

    reinterprets your arraylong 是一个简单的字节序列(即 char s),并将该序列写入文件 .

相关问题