将某些内容放入我的数组时出错。 C
Error while putting something in my array. C
我的程序 (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.leeftijd = 18;
addLid(ledenArray, lid, nLeden);
也不正确,因为 addLid
期望指向指针的指针作为其第一个参数,指向元素数量的指针作为第三个参数,因此它可以更新这些在调用者的范围内。你应该这样写:addLid(&ledenArray, lid, &nLeden);
请注意,您应该在启用更多警告的情况下编译您的程序,以使编译器发出有关此类类型不匹配的有用诊断。
我的程序 (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.leeftijd = 18;
addLid(ledenArray, lid, nLeden);
也不正确,因为addLid
期望指向指针的指针作为其第一个参数,指向元素数量的指针作为第三个参数,因此它可以更新这些在调用者的范围内。你应该这样写:addLid(&ledenArray, lid, &nLeden);
请注意,您应该在启用更多警告的情况下编译您的程序,以使编译器发出有关此类类型不匹配的有用诊断。