gpt4 book ai didi

无法将 fscanf 转换为双解引用指针

转载 作者:行者123 更新时间:2023-11-30 18:07:38 25 4
gpt4 key购买 nike

我的程序中的其他地方有一个数组:

data=malloc(sizeof(int)*lines);

我想将文件中的数据读入此数组。我已经打开了文件等。

我创建了一个函数来将数据读入该数组:

int readfile(FILE* fp,int** storage_array,int lines)

{
int i=0;

for(i=0; i<lines; i++)
{
fscanf(fp,"%lf",&(**storage_array+i));
}


rewind(fp);

return 0;

}

Dev C++ 给了我

一元“&”中的左值无效

我尝试了很多不同的方法来让它发挥作用,这真的让我压力很大:(

你知道我做错了什么吗?

非常感谢:)

最佳答案

在 C 中,指向 int 的指针 (int *) 变量保存整数的地址,也可用于保存多个数组中第一个整数的地址,因为只需添加第一个整数的地址即可达到第二个及后续整数。 malloc() 为您提供一个内存块的地址,您将使用该内存块来保存lines个连续整数,因此您应该将它提供的地址存储在指针中 - to-int 变量,相关的 readfile() 参数也应该具有这种类型。

readfile()内,您想要为fscanf()调用提供第i个整数的地址。您只需将 i 添加到原始地址即可获得此值,因为 C 会为您将 i 乘以 sizeof (int):

int *data;
data=malloc(sizeof(int)*lines);
readfile(fp, data, lines);

...

free(data); /* Don't forget to release the memory eventually */

...

int readfile(FILE* fp,int* storage_array,int lines)
{
int i=0;

for(i=0; i<lines; i++)
{
fscanf(fp,"%lf",storage_array+i);
}


rewind(fp);

return 0;

}

fscanf() 行可以等效地编写

fscanf(fp,"%lf",&(*(storage_array+i)));

甚至

fscanf(fp,"%lf",&storage_array[i]);

因为在 C 语言中,表达式 *(a + b)a[b] 在各方面都是等价的。

关于无法将 fscanf 转换为双解引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com