gpt4 book ai didi

c - 结构体指针数组 [C++]

转载 作者:行者123 更新时间:2023-11-30 19:06:26 25 4
gpt4 key购买 nike

剧透 - 下面给出的代码不是我的,而是我的老师!主要任务是使用该项目按原样实现所需的功能!

最近我在学校有一个有趣的项目。我们有示例程序,需要在其中实现一些所需的功能。基本上程序使用指向结构的指针数组(据我理解)

这是结构:

typedef struct Trip {
int number;
Date date;
char *name;
char *destination;
int kapacity;
} TRIP;

基本上所有函数都使用指针,但我不完全理解。

TRIP* newTrip(const char *nam, const char *des, int kap, Date& dat);
char *getInfo(TRIP* z);
void printInfo(TRIP* z);

实现添加行程和打印信息

TRIP* newTrip(const char *n, const char *de, int ka, Date& dat) {
TRIP*z = new TRIP;
z->number= ++numberOfTrips;
z->date = dat;
z->name= new char[strlen(n) + 1];
strcpy_s(z->nazev, strlen(n)+1, n);
z->destination = new char[strlen(de) + 1];
strcpy_s(z->destination, strlen(de)+1, de);
z->kapacity = k;
return 0;
};

char *getInfo(TRIP *z) {
char *res;
char pom[100];
if (z != NULL) {
snprintf(pom, 10, "%d %s %s", z->number, z->name, z->destination);
res = new char[strlen(pom) + 1];
strcpy_s(res, strlen(pom), pom);
return res;
}
else return NULL;
};

void printTrip(TRIP *z) {
if (z != NULL) printf("%s\n", getInfo(z);
};

所以在 main 中我们创建了一个指针数组?

TRIP* Trips[20];

并测试添加行程(不是我的)

void Test()
{
Trips[numberOfTrips++] = newTrip("Japan", "Tokio", 30, Date(1, 6, 2018));
}

第一个任务是简单地添加打印所有行程的功能。问题是,当我调试它时,在添加一些行程后,struct Trips 中有零。如何将其分配给实际结构以及如何打印信息?我在网上尝试了很多方法,但没有任何效果。

简单

int main() 
{
...
Test();
for(int i=0; i <= numberofTrips i++)
printInfo(Trips[i]);

return 0;
}

不起作用,因为 Trips 是指针数组?我需要帮助,这不是为了学校,而是为了让我了解这种东西。第二个任务是通过手动输入添加行程,但那是稍后的事。多谢!

最佳答案

您需要返回指向创建的行程的指针,而不是 0

TRIP* newTrip(const char *nam, const char *de, int ka, Date& dat) {
TRIP*z = new TRIP;
z->number= ++numberOfTrips;
z->date = dat;
z->name= new char[strlen(n) + 1];
strcpy_s(z->nazev, strlen(n)+1, n);
z->destination = new char[strlen(de) + 1];
strcpy_s(z->destination, strlen(de)+1, de);
z->kapacity = k;
return z;
}

顺便说一句:函数末尾的右括号后面的分号不是必需的。仅结构和类 (c++) 需要它

关于c - 结构体指针数组 [C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171055/

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