在 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"
这样的初始化符合标准并且受支持。
我应该提到我在使用 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"
这样的初始化符合标准并且受支持。