比较两个字符 [在 C 中]



我有一个结构体

struct Human {
char            *name;
struct location *location;
int             cash;
char            *weapon;
};

另一个:

struct World {
char                *name;
char                *weapon;
int                 price;
};

这些位于头文件中,并包含在 .c 程序中。

问题

我想比较武器是否与两个位置的武器相同

我尝试了什么

int compareWeapons(struct bot *b,int whatToGet) // function signature
struct location *l =  b->location;
if ((strcmp(l->weapon,b->weapon) == 0)) { // do stuff }

**我收到错误消息 **

运行时错误:加载类型为"char"的空指针

请告诉我,如果不使用 strcmp,我如何比较不同结构中的两个字符?

代码中的问题不是strcmp,而是空指针,这意味着变量">b"==NULL,所以">b"没有">location"属性,这就是NullPointerException生成的地方。 我可能会建议检查如何将参数传递给函数 使用&传递变量的地址(指针(,或者只是传递变量的名称(如果它是指针( 我也不明白">机器人"和">位置"的类型 我想你的意思是"结构人类"而不是"结构机器人"和"结构世界"而不是">结构位置">您可以命名结构,这样就不必在每个声明中编写结构

struct World{
//variables
}World;

然后结构世界将和只说世界一样

问题不在于你的字符串比较,而在于你如何声明你的结构。

您似乎正在使用(结构机器人*(来引用(结构人类(。 在这种情况下,它应该看起来:

int compareWeapons(struct World *b, int whattoget);

此外,必须初始化结构位置,否则将引用不包含任何内容 (NULL( 的结构。

struct location
{
//your struct variables
};

下面是有关如何初始化结构的基本示例的链接,https://www.cs.usfca.edu/~wolber/SoftwareDev/C/CStructs.htm

相关内容

  • 没有找到相关文章

最新更新