gpt4 book ai didi

c - 将某些内容放入我的数组时出错。 C

转载 作者:行者123 更新时间:2023-11-30 15:00:59 26 4
gpt4 key购买 nike

我的程序 (Eclipse Neon) 在运行程序时崩溃。我找到了问题所在的行,但不知道如何解决。

首先我创建一个动态数组:

int nLeden = 0;
AtletiekLid *ledenArray = (AtletiekLid *)calloc(nLeden, sizeof(AtletiekLid));

使用这个结构:

typedef struct {
char naam[30];
unsigned leeftijd;
} AtletiekLid;

之后我这样做:

AtletiekLid lid;

strcpy(&lid.naam, "Test");
strcpy(&lid.leeftijd, "18");
addLid(ledenArray, lid, nLeden); //Program stopped working (windows error) on this line.

addLid 函数:

void addLid(AtletiekLid **ledenArray, AtletiekLid lid, int *nLeden) {   
*ledenArray = (AtletiekLid *)realloc(*ledenArray, (*nLeden + 1) * sizeof(AtletiekLid));
(*ledenArray)[*nLeden] = lid;
(*nLeden)++;
}

addLid(我的程序崩溃的地方)中,它在这一行崩溃了:

*ledenArray = (AtletiekLid *)realloc...

谁能帮帮我,我不知道我做错了什么。

最佳答案

发布的代码片段中有 3 个错误:

  • strcpy(&lid.naam, "Test"); 应将 strcpy(lid.naam, "Test"); 读作 lid。 naam 是一个数组,当传递给函数时,它会衰减为指向其第一个元素的指针。

  • strcpy(&lid.leeftijd, "18"); 不正确。 lid.leeftijd 是一个 unsigned int,您应该改为编写 lid.leftijd = 18;

  • addLid(ledenArray, lit, nLeden); 也是不正确的,因为 addLid 期望一个指向指针作为其第一个参数的指针和一个指向数字的指针元素作为第三个,因此它可以在调用者的范围内更新这些元素。你应该这样写:addLid(&ledenArray,lid,&nLeden);

请注意,您应该在编译程序时启用更多警告,以便编译器针对此类类型不匹配发出有用的诊断信息。

关于c - 将某些内容放入我的数组时出错。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790083/

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