несовместимые типы при назначении типа ‘char ‘ из типа ‘char *’

Я пытаюсь назначить поле char * для поля char *, но получить эту ошибку:

incompatible types when assigning to type 'char[128]' from type 'char *'

Как я могу это исправить? и почему это происходит?

  AddressItem_Callback_ContextType *context = (AddressItem_Callback_ContextType *)malloc(sizeof(AddressItem_Callback_ContextType)); //check if icons need to be downloaded if (pEntity->cBigIcon[0] != 0){ if (res_get(RES_BITMAP,RES_SKIN, pEntity->cBigIcon) == NULL){ context->Icon = pEntity->cBigIcon; context->iID = pEntity->iID; res_download(RES_DOWNLOAD_IMAGE, pEntity->cBigIcon, NULL, "",TRUE, 1, addressItem_icon_download_callback, context ); } } 

декларации:

 typedef struct { int iID; // POI Type ID int iExternalPoiServiceID; // Service ID int iExternalPoiProviderID; // Provider ID char cBigIcon[MAX_ICON_LENGHT]; char cSmallIcon[MAX_ICON_LENGHT]; char cBigPromotionIcon[MAX_ICON_LENGHT]; char cSmallPromotionIcon[MAX_ICON_LENGHT]; char cOnClickUrl[MAX_URL_LENGTH]; .. } RTExternalPoiType; typedef struct { int iID; // POI Type ID //int iExternalPoiServiceID; // Service ID // int iExternalPoiProviderID; // Provider ID char Icon[MAX_ICON_LENGHT]; } AddressItem_Callback_ContextType; 

Имена массива – это постоянные указатели, которые вы не можете изменить. В этом сценарии Icon является постоянным указателем и

  context->Icon = pEntity->cBigIcon; 

здесь вы пытаетесь изменить его, что запрещено.

Попробуй это ..

зЬгср (context-> Икона, pEntity-> cBigIcon);

Вы не можете назначать массивы (как указано в сообщении об ошибке). Скопируйте строки:

 snprintf(aStruct->member, sizeof(aStruct->member), "%s", someString); 

Или, если вы хотите стрелять в ногу (склонность к переполнению буфера):

 strcpy(aStruct->member, "the string"); 

Или, если вы хотите стрелять себе в ногу и не замечаете этого (безопасно переполнения буфера, но не NUL – завершите строку, если она слишком длинная):

 strncpy(aStruct->member, "the string", sizeof(aStruct->member));