C语言 在函数 strcmp 中使用节点



我有一个家庭作业问题,在下面的引号中描述。这是我必须实现的简单函数。在网上查看后,我只是找到了具有类似实现但没有解释的函数。

对我的代码进行评分的程序只说"wordCmp 在使用时失败"。所以基本上关于如何以不同的方式解决这个问题的任何建议?只是评分员给出了如此广泛的回应,我不确定它有什么问题。

int wordCmp (struct inode* n1, struct inode* n2(

返回一个整数,指示 中的字符串之间的关系 两个节点:大于零的值表示第一个节点 不匹配的字符在 n1-> 单词中的值大于 n2->字;小于零的值表示相反的情况。您可以 使用 strcmp 实现此功能。

struct inode {
  char *word;
};
int wordCmp (struct inode* n1, struct inode* n2){
     return strcmp(n1->word, n2->word);
}

基于问题作者的编辑,解决方案是:

我制作了等于节点中单词值的指针,并且 然后比较了它们。我不知道为什么它有效,尽管老实说它 对我来说似乎是一样的。

它在讲义中说我们无法访问节点字段 径直;不知道为什么...,所以我只是实现了以下代码,所以 我不必直接访问它。它做完全相同的事情...

int wordCmp (struct inode* n1, struct inode* n2){
char* wordOne = nodeGetWord(n1);
char* wordTwo = nodeGetWord(n2);
return strcmp(wordOne, wordTwo);
}
nodeGetWord(struct lnode *node){
 return node->word;
}

这就是我所做的一切,它奏效了...对不起,如果这看起来很愚蠢,但它是 评分员拿了什么。

你检查过它们是否相等吗? 如果 strcmp 是相同的字符串,则返回 0。 从您作为作业的内容来看,除了字符串相等时,您似乎具有正确的比较。

添加一些逻辑以确定字符串是否相同,返回一个遵循排序选择的值。

最新更新