在 Turbo C++ 中将字符串分配给结构中的 char 数组

Assigning a string to a char array in a structure in Turbo C++

我应该提到我在使用 Turbo C++(是旧版本),因为我的学校要求它。

我有这样的结构:

struct move{
 int power;
 int pp;
 char name[10];
 };

当我尝试创建一个新变量时,如果我这样做:

move tackle;
tackle.pp = 10;
tackle.power = 20;
tackle.name = "tackle";

我得到一个错误:

Error NONAME00.CPP 11: Lvalue required

但这行得通:

move tackle = {20, 10, "tackle"}

有效。

我做错了什么?

P.S。第 11 行是 tackle.name = "tackle",抱歉,如果我之前不清楚。

您正在使用 C 风格的字符串,您应该通过

对其进行初始化
strcpy(tackle.name, "tackle");

你不能给数组赋值,但你可以初始化它。

tackle.name = "tackle";

是一个作业,而

move tackle = {20, 10, "tackle"};

是初始化。

要替换数组的内容,请使用 strcpy:

strcpy(tackle.name, "tackle");

或者,更好的是,如果允许,请使用 string

#include <string>

struct move{
 int power;
 int pp;
 string name;
 };

这一行

tackle.name = "tackle";

尝试将一个数组分配给另一个 C 或 C++ 不支持的操作。

但是,像 char name[10] = "tackle" 这样的初始化符合标准并且受支持。