从类型'char*'分配类型'char [128]'时不兼容的类型

Ela*_*nda 3 c syntax struct

我正在尝试将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 );
      }
   }
Run Code Online (Sandbox Code Playgroud)

声明:

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;
Run Code Online (Sandbox Code Playgroud)

小智 12

您无法分配给数组(作为错误消息状态).复制字符串:

snprintf(aStruct->member, sizeof(aStruct->member), "%s", someString);
Run Code Online (Sandbox Code Playgroud)

或者,如果你想用脚射击自己(容易发生缓冲超支):

strcpy(aStruct->member, "the string");
Run Code Online (Sandbox Code Playgroud)

或者,如果你想用脚射击并且没有注意到它(缓冲区溢出的安全性,但是如果太长则不能NUL终止字符串):

strncpy(aStruct->member, "the string", sizeof(aStruct->member));
Run Code Online (Sandbox Code Playgroud)

  • 用于模拟`strncpy()`的+1. (4认同)