在下面的代码中,在将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]);
}
}
答案 0 :(得分:1)
问题是a[4]
是char
,而len1
是字符数组!
宣布
时char a[7] = {...}
你说你希望a成为一个字符数组,并且你将a的值初始化为{...}
中的值。
当你说a[4]
时,你说的是从a的位置开始4并使用其中的值,即char
。
但len1
是char 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*` */