【问题标题】:Cannot assign a string to an array [duplicate]无法将字符串分配给数组[重复]
【发布时间】:2015-03-18 15:32:01
【问题描述】:

我需要创建一个结构,其成员是一个字符数组,如下所示:

struct Person{
    char name [100];

};

为什么下面会导致类型不兼容的错误?以及如何解决?

struct Person john;
john.name = "John"; 

上面的分配和下面的分配有什么区别,效果很好:

char str[100] = "this is a string";

【问题讨论】:

  • “下面的作业”不是作业。
  • 您不能分配给数组,请使用strcpy
  • 如果您认为 C 没有字符串,这可能会有所帮助。它确实具有字符串文字,可以以几种不同的方式使用,并且它具有用于操作字节序列的标准库函数,其中 0 字节标记结束,也称为“字符串”。但如果你习惯了几乎任何其他语言的字符串,这些就不是你会称之为“字符串”的东西了。

标签: c


【解决方案1】:

john.name = "John"; 是一个赋值(在这种情况下是不可能的),而

char str[100] = "this is a string";  

是带有初始化的定义。

john.name = "John"; 是 C 中的无效语句,因为数组不能是 = 运算符的左操作数。您需要strcpystrncpy 来复制字符串。

【讨论】:

    【解决方案2】:

    C 不允许您对数组使用赋值运算符。有一项特殊规定允许您使用字符串字面量初始化数组:

    struct Person john = {"John"};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多