赋值从指针生成整数而没有强制转换

时间:2011-05-27 09:57:57

标签: c

在下面的代码中,在将len1分配给数组a时收到错误 错误是

assignment makes integer from pointer without a cast

请帮帮我。

void main()
{
    int i=0;
    char a[7]={0x00,0xdc,0x01,0x04};
    char str[70] = "123456644454464644456456456564564544132131113132132";
    int len=0;
    char len1[50]={};
    len = strlen(str);
    printf("The Length is : %02x", len);
    printf("The Length is : %d", len);
    sprintf(len1,"0x%02x",len);
    printf("The Len1 value : %s", len1);

    a[4]=len1; // This line causes the error.

    for(i=0;i<=7;i++)
    {   
        printf("%05c",a[i]);
        //printf("%x",a[i]);
    }
}

2 个答案:

答案 0 :(得分:1)

问题是a[4]char,而len1是字符数组!

宣布

char a[7] = {...}

你说你希望a成为一个字符数组,并且你将a的值初始化为{...}中的值。

当你说a[4]时,你说的是从a的位置开始4并使用其中的值,即char。 但len1char pointer,因此当您将其分配给a[4]时,您会收到警告!

答案 1 :(得分:1)

声明中(子)表达式的类型是什么?

a[4] = len1;

len1是一个包含50个字符(类型char[50])的数组,但在上面的表达式中,它衰减到指向其第一个元素的指针。这是char*类型的值 a[4]char类型的对象。

您无法将char*分配给char类型的对象!

我想也许你想要

/* BEWARE BUFFER OVERFLOWS */
strcpy(a+4, len1); /* a+4 is of type `char*`, len1 decays to `char*` */