gpt4 book ai didi

c - C中1M元素的结构数组

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

我有下面的代码,它按照我打算处理相对较小的数据的方式工作,比如文本文件中的 10000 行。我需要它来处理 1M 行的文件。它给出了段错误,我不知道如何解决它。你能帮帮我吗?

这在 main 中调用:

playersInfo player[size];

.......更多代码在这里

然后对于程序的这一部分,我有这段代码:(它读取一个文件并将信息放入数组中,然后计算玩家的 mvp 并打印具有最高 mvp 的玩家)

if(choice == 'D')
{
printf("\n");
while(i < size && fscanf(myFile, "%d %s %f %f %f %f %f %d %d %d \n", &player[i].id, player[i].name,
&player[i].ppg, &player[i].apg, &player[i].rpg, &player[i].spg, &player[i].mpg,
&player[i].vote1, &player[i].vote2, &player[i].vote3) != EOF)
{
player[i].mvp = 0;
i++;
}

for(i = 0; i < size; i++)
{
int current = i;
if(player[current].vote1 != player[current].id)
{
i = findIndex(player, size, player[current].vote1);
player[i].mvp += 3;
}

if((player[current].vote2 != player[current].id) && (player[current].vote2 != player[current].vote1))
{
i = findIndex(player, size, player[current].vote2);
player[i].mvp += 2;
}
if((player[current].vote3 != player[current].id) && (player[current].vote3 != player[current].vote1) && (player[current].vote3 != player[current].vote2))
{
i = findIndex(player, size, player[current].vote3);
player[i].mvp += 1;
}
i = current;
}

qsort((void *) &player, size, sizeof(playersInfo), (compfn)comparePlayersByMVP);
printf("The MVP is %s (%d), with %d point(s).\n", player[0].name, player[0].id, player[0].mvp);
}

最佳答案

如果您在堆栈中声明数组,那么它可能太大了。考虑使用堆。

playersInfo *player = (playersInfo*) malloc(size * sizeof(playersInfo));

关于c - C中1M元素的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214100/

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