gpt4 book ai didi

c - 如何将结构体数组传递给函数并在其中正确存储值?

转载 作者:行者123 更新时间:2023-11-30 15:57:58 24 4
gpt4 key购买 nike

我想读取一个包含样本编号、值和状态(1.1, 23,0) 的文件。我使用了一个结构来保存该信息。我将传递函数结构数组和文件位置。

#include <stdio.h>

struct Data_point
{
long sampleNumber;
double value;
int status;
};


int filldata(struct Data_point *a, const char *filelocation)
{
FILE *f;
if((f=fopen(filelocation,"r"))==NULL)
{
printf("You cannot open");
}
fscanf(f, "%ld%lf%d", a.sampleNumber, a.value, a.status);
}



int main(void)
{
struct Data_point data[10];
filldata(data, "/home/alexchan/IntrotoC/rec11/dataPoints.txt");
return 0;
}

但是,我收到一条错误消息,“请求成员不是结构”...

最佳答案

一个问题是 filldata()正在接受一个指针参数。所以你使用->称呼成员而不是“.”。所以a.sampleNumber应该是a->sampleNumber例如。

另一个问题是 filldata()正在读取单个结构,但您将指向数组顶部的指针传递给它,这与 &(data[0]) 同义。 。因此,如果您重复调用该函数(但您没有),该函数只会覆盖第一个元素。如果在循环中调用它,则需要将其传递给各个数组成员的指针:

for(int i = 0; i < 10; ++i){
filldata(&(data[i]), "/home/alexchan/IntrotoC/rec11/dataPoints.txt");
}

你实际上可以使用data + i作为第一个参数而不是 &(data[i])但我喜欢后者,因为我发现它更具可读性。

关于c - 如何将结构体数组传递给函数并在其中正确存储值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135107/

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