多个连续的 strcpy(),显示包含每个下一个 strcpy() 的位

Multiple consecutive strcpy(), display contains bits of every next strcpy()

已回复,感谢大家的帮助。

这两行显示出了什么问题:

下一行声明了一个用 "POUND" 初始化的 char cP1_Move2_Name 数组。该数组的大小恰好是 6 个字节,即 "POUND" 中的 5 个字符加上一个 NUL 终止符(字符串以 NUL 字符终止,请阅读 C 教科书中有关字符串的章节以获取更多详细信息) :

char cP1_Move2_Name[] = "POUND";

现在在下一行中将 "EARTHQUAKE" 复制到数组 cP1_Move2_Name 中。对于 "EARTHQUAKE" 你需要 11 个字节,但是如前所述,cP1_Move2_Name 数组的大小只有 6.

strcpy(cP1_Move2_Name,"EARTHQUAKE");

所以发生的情况是复制的字节多于space,因此一些其他内存将被覆盖,您可能会遇到各种问题。

为了更正程序,您可以用预先确定的最大大小声明数组,以确保总是有足够的 space。

#define MAXSTRINGLENGTH 100
...
char cP1_Pokemon_Name[MAXSTRINGLENGTH] = "POKEMON";
char cP1_Move1_Name[MAXSTRINGLENGTH] = "TACKLE";
char cP1_Move2_Name[MAXSTRINGLENGTH] = "POUND";
...
etc.