[英]“Error: expression must be a modifiable lvalue” while trying to change char* pointer location
我正在用C编写一个消除前导空格的小函数,但这给了我“表达式必须是可修改的左值”
char str1[20];
strcpy (str1, otherStr);
for (int i = 0; i < strlen(str1); i++)
{
if (!isspace(str1[i]))
str1 = &(str1[i]);
}
我在这里做错了什么? (是的,otherStr已定义)
您的代码中没有char *
指针,该指针可能会更改。 数组不是指针。 您无法“更改”其位置。
在C语言数组中,对象本身是不可修改的左值,这是错误措辞的出处。
char *str1 = malloc(20);
// or
// char s[20];
// char * str1 = s; // note the lack &s
// or
// char *str1 = alloca(20);
strcpy (str1, otherStr);
for (int i = 0; i < strlen(str1); i++)
{
if (!isspace(str1[i]))
str1 = &(str1[i]);
}
您的代码无法正常工作,因为当char str1[20]
str1不是变量-在大多数情况下,它是指针文字,类似于(void *)0x0342
。 你不能做0x0342 = 7;
因此您也无法分配给数组名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.