你有:
struct player_t =
{
char player_name;
char player_number;
};
嗯,不,实际上你没有。=
定义的语法中没有struct
,并且您没有提到语法错误消息。你可能有更多这样的东西:
struct player_t
{
char player_name;
char player_number;
};
您的结构仅包含两个char
成员,不足以容纳名称或数字(除非名称仅限于单个字母,并且数字限制为单个数字或非常小的值,具体取决于您的存储方式) . 所以这就是你问题的根源。
假设您希望将名称和数字都存储为字符串,您可以将两个成员数组设为,char
例如:
#define MAX_LEN 50
struct player_t
{
char player_name[50];
char player_number[50];
};
然后您需要使用该strcpy()
函数将字符串值复制到player_name
and player_number
-- 或者您可以使用字符串文字初始化它们,但这不会让您在程序执行期间确定名称和编号。您还必须注意不要尝试将字符串存储的时间超过player_name
并且player_number
可以容纳。对于第一次尝试,您可以暂时忽略该问题,直到您使程序正常工作;最终,您会想要添加错误处理代码,其中包括决定出现错误时该怎么做。
或者你可以让它们成为指针:
struct player_t
{
char *player_name;
char *player_number;
};
这使您可以执行以下操作:
players[3].player_name = "Fred";
但是您必须为每个玩家单独分配名称和号码;你不能player_name
让所有玩家的成员都指向同一个对象。例如:
char name[30] = "Fred";
players[3].player_name = name;
修改name
也会修改 指向的字符串players[3].player_name
。