0

我在为结构元素赋值时遇到问题。当我尝试为其赋值时,在编译期间收到上面的警告消息,我收到上面的警告消息。我该如何摆脱它..这只是初始化的问题吗?以及如何在使用之前初始化结构。

我尝试使用警告消息运行它,但出现分段错误错误

C中的新手..请多多包涵

struct outrec {
    char *cny_cd;
    char *region_cd;
    char *region_name;
    char *city_name;
    char *postal_code;
    float latitude;
    float longitude;
    int metro_code;
    int area_code;
    char *out_time_zone;
    char *cityrangeip_start;
    char *cityrangeip_end;
    char *orgname;
    int  orgnetmask;
    char *orgrangeip_start;
    char *orgrangeip_end;
    char *isporgname;
    char *domainname;
    int  domainnetmask;
    char *domainrangeip_start;
    char *domainrangeip_end;
};

in the main program i called an instance of it 

结构 outrec result_outrec;

      printf("Storing values in struct \n" ); 
        strcpy(result_outrec.cny_cd, _mk_NA(gir->country_code));
        strcpy(result_outrec.region_cd, _mk_NA(gir->region));
        strcpy(result_outrec.region_name,_mk_NA(GeoIP_region_name_by_code(gir->country_code, gir->region)));
        strcpy(result_outrec.city_name,_mk_NA(gir->city));
        strcpy(result_outrec.postal_code,_mk_NA(gir->postal_code));
        result_outrec.latitude=gir->latitude;
        result_outrec.longitude=gir->longitude;
        result_outrec.metro_code=gir->metro_code;
        result_outrec.area_code=gir->area_code;
        strcpy(result_outrec.out_time_zone,_mk_NA(time_zone));
        strcpy(result_outrec.cityrangeip_start,(ret[0]));
        strcpy(result_outrec.cityrangeip_end,(ret[1]));

c的新手。

4

1 回答 1

0

如果您在 Google 中输入了警告信息,您会发现 thisthis question 基本相同,并且有一个非常体面的答案。基本上,您要声明指针,但不要让它们指向实际的内存块(初始化它们),这会导致警告。之后,您将数据复制到它们指向的不存在的内存中,这会导致段错误。

于 2013-06-07T11:50:14.120 回答