c - 尝试更改 char* 指针位置时出现 "Error: expression must be a modifiable lvalue"

标签 c cstring

我正在用 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 语言中,数组对象本身是不可修改 左值,这就是错误措辞的来源。

关于c - 尝试更改 char* 指针位置时出现 "Error: expression must be a modifiable lvalue",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352234/

相关文章:

c++ - C/C++ 中用于数组的 sizeof()

c - 字符串和操作字符串,这里到底发生了什么?

string - "Yes, Virginia, it had better be unsigned"是什么意思?

c - 如何用更大的 char 指针列表覆盖 char 指针数组?

C++ 将字节值作为 int 添加到 CString

c - 为什么 c = 4 而不是 1 的结构中字符和 int 地址的差异

c - 为什么 "printf("%d", '0/' );"的答案是 12335?

c++ - 是否有任何方法可以将具有 O(n) 复杂度的矩阵相乘?

c++ - 将 float\double 数字格式化为零填充和预设位数的 CString

c++ - 使用 strcpy() 获取 char* 的一部分会导致程序崩溃