目前有一个程序,我读取一个二进制文件,其中前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;
}
}