我想将struct数组作为print函数的参数传递,然后访问其成员进行打印。为什么我不指示任何指针时会出现指针错误?
在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;
}
我希望有人可以帮助我!
问候
答案 0 :(得分: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;
}
谢谢!
答案 1 :(得分:0)
感谢大家的大力支持和有用的意见和建议。
在调整了这个帖子中人们指出的一些不同的东西之后,它最终成功编译了。
我调整的事情是:
将头文件包含在printFunctions文件中的city struct数据类型定义中
初始化结构以解决指针错误
感谢您提供的反馈和意见/建议。
度过美好的一天!