读取文件时,第一个数字是int
,大小与数组相同,其余为double
这是功能:
void read1dascii(double** a, int* m, char* infile)
{
FILE * fp = fopen(infile, "r");
fscanf(fp, "%d", m);
alloc1d(a, *m);
fscanf(fp, "%lf\n", *a);
fclose(fp);
}
以下是它调用的alloc1d
函数:
void alloc1d(double** a, int m)
{
*a = malloc(sizeof(double) * m);
}
我得到的第一个数字是大小,然后是数组中的第一个数字,但其余的数字都是零。
答案 0 :(得分:1)
您需要使用循环阅读所有这些内容。
int i;
for (i = 0; i < *m; ++i) {
fscanf(fp, "%lf", *a + i);
}
答案 1 :(得分:0)
fscanf(fp, "%lf\n", *a);
这里你只读一次,所以它只是接收第一个浮点数,要读取数组的其余部分,你需要像
这样的东西while ( fscanf(fp, "%lf\n", &a) == 1 )
{
/* do stuff with 'a' here */
}