如何在C中以字节为单位获取数组的大小

时间:2018-03-13 10:10:47

标签: c binaryfiles

目前有一个程序,我读取一个二进制文件,其中前4个字节包含一个整数n,它是文件中双精度值的数量,文件的其余部分有8n个字节,包含一个double值数组。 / p>

我可以正确读取文件并确定系数,问题在于检测n给出的信息是否正确。我的问题是为什么

sizeof(*coeff_values_p)

返回值4而不是8n。我使用的文件n=29所以大小不应该是232?

任何帮助都将不胜感激。

#include "Ass-01.h"
#include <stdio.h>

int read_coefficients(int *coeff_num_p, double **coeff_values_p, char 
*filename)
{
    //uint32_t n;                           //Number of coefficients
    FILE *f;                            //File to be opened

    //File reading storing the value of n
    f = fopen(filename, "rb");
    fread(coeff_num_p, sizeof(uint32_t), 1, f);

    *coeff_values_p = malloc(8 * *coeff_num_p);

    fread(*coeff_values_p, sizeof(uint64_t), *coeff_num_p, f);

    if (sizeof(*coeff_values_p) != (*coeff_num_p*sizeof(uint64_t)))
    {
        return -1;
    }
    else
    {
        return 0;
    }
}

0 个答案:

没有答案