比较两个字符[在C]

时间:2018-06-03 01:41:36

标签: c char compare

我有一个结构

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,我如何比较不同结构中的两个char?

2 个答案:

答案 0 :(得分:0)

你的代码中的问题不是strcmp而是空指针,这意味着变量" b " == NULL,所以" b "没有" 位置"属性以及 NullPointerException 生成的位置。 我可能会建议您检查如何将参数传递给函数 如果它是指针,请使用& 传递变量的地址(指针)或仅传递变量的名称 此外,我还没有理解类型" bot "和" 位置" 我认为你的意思是" struct Human "不是" struct bot "和" struct World "不是" 结构位置" 您可以命名您的结构,这样您就不必在每个声明中编写结构

WorkManager

然后 struct World 就像说世界

一样

答案 1 :(得分:0)

问题不在于您的字符串比较,而是您声明结构的方式。

您似乎正在使用(struct bot *)来引用(struct Human)。 在这种情况下,它应该看起来:

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

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

struct location
{
    //your struct variables
};

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