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

标签 c pointers 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;
}

谢谢!

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

相关文章:

c - 将结构指针元素传递给 FIFO - C

c - NMEA校验和计算计算

c - 在 C 中创建函数指针结构时从未完成的类型错误

C++ 指针数组为每个元素返回相同的值

c++ - 指向类函数数组的指针

C++ 将内部结构作为参数传递

从 C 中的 ".bin"文件创建列表

指针算法的说明

C 基础知识,传输字符串或指针

c - strtok 不打印字符串的所有部分