【问题标题】:Whats is this error? error: array type 'char [400]' is not assignable [duplicate]这是什么错误?错误:数组类型'char [400]'不可分配[重复]
【发布时间】:2021-03-31 13:03:41
【问题描述】:

我正在编码,我的 IDE 显示此错误。这是什么?

error: array type 'char [400]' is not assignable name[400] = get_string("Your name: ");

代码:

char name[400] = "";

do
{
    name = get_string("Your name: ");
}
while(name <= 0);

谢谢。

【问题讨论】:

  • 阅读 C 关于类型和指针的书。那里提到了。
  • 另见this C reference。使用好的编译器(例如 GCC 带有所有警告和调试信息,例如 gcc -Wall -Wextra -g)。从现有的 C 开源程序中汲取灵感,例如 GNU bash
  • 你在学习 CS50 课程吗?
  • 那么如果name是一个字符串,你检查name &lt;= 0是什么意思?
  • CS50 是这里所有问题的根源,因为它让学生认为 C 中有一个字符串类,我们可以像任何其他变量一样分配给它。所以这个问题非常有道理,因为他们就是这样被教导的……我们应该召集一群 SO 退伍军人,给哈佛写一封公开信,要求他们修复有害的课程。

标签: c


【解决方案1】:

无法分配数组。他们应该是的期望来自两个地方:

  • 我们可以使用= 符号进行初始化,恰好与符号= 进行赋值。而且我们知道我们可以使用= 来初始化数组,所以我们自动假设我们也应该能够分配。

    int arr[] = {1, 2, 3}; //OK, initialization
    arr = {4, 5, 6}; //Error, assignment
    
  • 我们处理的大多数类型都是可赋值的

好吧,数组不是。还有其他方法可以绕过直接赋值写入数组。对于您的特定情况,您可能正在寻找 strcpy 函数。

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 1970-01-01
    • 2020-11-23
    • 2014-01-20
    • 2019-02-24
    相关资源
    最近更新 更多