gpt4 book ai didi

c - 将结构体数组作为指针传递

转载 作者:行者123 更新时间:2023-11-30 16:31:10 26 4
gpt4 key购买 nike

我想将结构体数组作为打印函数的参数传递,然后访问其成员进行打印。为什么当我不传递任何指针时会出现指针错误?

在main.c中:

struct city {
double longitude;
double latitute;
char name[buf_size];
};
int numCitToRead = 10;
struct city cities[25];
printCities(&numCitToRead, cities);

注意:Struct 数组在文件解析函数中初始化。它总是 25 个字段长,但如果 numCitToRead 为 10,则只会填充 10 个字段

int printCities(int* t_numCitToRead, struct city t_cities[25]) {

for (unsigned short i = 0; i < *t_numCitToRead; i++) {
printf("\n\n\tCity %d: ", i+1);
printf("\nname:\t\t%s", t_cities[i].name);
printf("\nlongitude:\t%f", t_cities[i].longitude);
printf("\nlatitude:\t%f", t_cities[i].latitute);
}
return 0;
}

希望有人能帮助我!

问候

最佳答案

已经修改了代码并且现在可以工作了。让我们尝试一下:

#include <stdio.h>

struct city {
double longitude;
double latitute;
char *name;
};

int printCities(int* t_numCitToRead, struct city t_cities[25]) {

for (unsigned short i = 0; i < *t_numCitToRead; i++) {
printf("\n\n\tCity %d: ", i+1);
printf("\nname:\t\t%s", t_cities[i].name);
printf("\nlongitude:\t%f", t_cities[i].longitude);
printf("\nlatitude:\t%f", t_cities[i].latitute);
}
return 0;
}

int main() {
int numCitToRead = 10;
struct city cities[25];
// create dummy data
for(int i =1; i<=25; i++)
{
cities[i-1].name = "name";
cities[i-1].longitude = 10 * i;
cities[i-1].latitute = 10 * 20;
}
printCities(&numCitToRead, cities);
return 0;
}

谢谢!

关于c - 将结构体数组作为指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50746402/

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