赋值从没有强制转换的指针生成整数(C语言。)

时间:2018-04-10 20:39:18

标签: c arrays pointers char

您好我收到此错误:'赋值从指针生成整数而没有强制转换'

我所做的是将来自不同类型数组的许多值放入一个指针数组中。结果我在代码上得到了这个警告,该代码将整数分配给我的char指针数组。

这是我的代码:

int id[10] = {120, 121, 122, 123,124,125, 126, 127, 128,129 };
char *from[5] = {"value1", "value2", "value3", "value4", "value5" };
char *to[5] = {"value1", "value2", "value3", "value4", "value5" };
int date[5][3] = {{10,6,2018},{15,6,2018},{20,6,2018},{1,7,2018},{15,7,2018}};


char *flight[30];
int i = 2;


        int counter = 0;
        flight[0]="Flight ID:";
        flight[1]=  id[i]; //warning in this line.

        flight[2]=" From:";
        flight[3]=from[i];

        flight[4]=" to:";
        flight[5]=to[i];

        flight[6]=" Depart on:";
        flight[7]=date[i][0];//warning in this line.
        flight[8]="/";          
        flight[9]=date[i][1];   //warning in this line.
        flight[10]="/";                 
        flight[11]=date[i][2];  //warning in this line.     

1 个答案:

答案 0 :(得分:1)

您收到警告是因为您尝试将int值分配给char *。这些类型彼此不兼容。

不应该是char *的数组,而应该使flight成为一个结构数组,它将保存作为其中一部分的各种数据:

struct flight {
    int id;
    char *from;
    char *to;
    int departMon;
    int departDay;
    int departYear;
};

struct flight flight[30];

...

    flight[counter].id = id[i];
    flight[counter].from = from[i];
    flight[counter].to = to[i];
    flight[counter].departMon=date[i][0];
    flight[counter].departDay=date[i][1];
    flight[counter].departYear=date[i][2];
    counter++;