以下代码给出了以下错误:
从char类型*分配类型'char [10]'时不兼容的类型 lvalue需要作为递减操作数。
可能导致这种情况的原因是什么?
#include <stdio.h>
#include <string.h>
int main(void)
{
char *str1="1234";
char str2[10];
str2 = str2 + strlen(str1)-1; //the str pointer is at 3rd position
char *p = str2+1; //since it has to be a valid string, i assigned pointer p to give the null value at the end of the string.
*p = '\0';
while(*(str2--) = *(str1++)) //moving the pointer of str down and pointer of str1 up and copy char from str1 to str2
printf("%s", str2);
return 0;
}
答案 0 :(得分:3)
str2是一个数组,而不是一个指针,因此左侧str2 = ...
不是一个有意义的C表达式。
要么str2必须是指针,要么使用额外的变量(如p)来获取表达式
char *p = str2 + strlen(str1);
同样(str2--)
没有意义。使用指向str2的额外字符指针,并更改它。
将数组名称视为常量指针。它无法更改,但可以在表达式中=
的右侧使用。