gpt4 book ai didi

c - 使用 fscanf 在结构数组中设置结构的属性

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:04 25 4
gpt4 key购买 nike

Seg Fault 不是因为 ScanF 而发生的,而是因为我的 Main 函数有问题。

我正在尝试读取一些数据文件,但当我尝试使用 fscanf 时我的程序出现段错误。这是我拥有的:

while(fscanf(fr, "%d%s%d%d", riderArray[numberOfRiders].arrivalTime, riderArray[numberOfRiders].riderNumber,    riderArray[numberOfRiders].floorArrival, riderArray[numberOfRiders].floorDestination)!= EOF)
{
numberOfRiders++;
}

预期的目标是,每一行(保证格式为 int string int int )被解析为一个结构,直到 file fr 中的所有数据已阅读。

这样可行吗?

我想替代方案就是:

while(fscanf(fr, "%d%s%d%d", &temp1, &tempS, &temp2, &temp3)!= EOF)
{
riderArray[numberOfRiders].riderNumber = temp1;
etc. etc.
numberOfRiders++;
}

使用临时变量避免必须完全组合 fscanf、结构和数组(无论如何,这可能看起来更清晰。

这是结构:

typedef struct rider
{
char riderNumber[5];
int timeWaiting;
int jobLength;
int arrivalTime;
int floorArrival;
int floorDestination;

} rider;

最佳答案

你必须给 fscanf 一些指示:

while(
fscanf(fr, "%d%s%d%d",
&riderArray[numberOfRiders].arrivalTime,
riderArray[numberOfRiders].riderNumber, // this is already a pointer
&riderArray[numberOfRiders].floorArrival,
&riderArray[numberOfRiders].floorDestination
) != EOF
)

关于c - 使用 fscanf 在结构数组中设置结构的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122351/

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