[英]Passing A Struct array as a pointer
我想将struct数组作为打印函数的参数传递,然后访问其成员进行打印。 当我不分配任何指针时,为什么会出现指针错误?
在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;
}
谢谢!
感谢大家的大力支持和有用的评论和建议。
在调整了该线程中人们指出的一些不同的东西之后,它终于成功编译了。
我调整的是:
将头文件包含到printFunctions文件中的city struct数据类型定义中
初始化结构以解决指针错误
感谢您的宝贵意见和评论/建议。
祝你今天愉快!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.