繁体   English   中英

C 使用 == 比较字符串

[英]C comparing strings using ==

我正在做一项要求我实现优先级队列的任务。 它必须通过 19 个断言。 我可以通过 18/19 断言,但它会卡在这个断言上。

assert(head->data == "first node");

这对我来说没有意义,因为为什么它使用 == 来比较两个字符串而不是strcmp 我应该如何通过这个断言? 我不允许使用断言更改代码。 这是教授的错误还是我遗漏了什么。

用于访问数据的结构如下。

typedef struct node {
    int priority;
    char * data;
    struct node * next;
} Node_t, * Node_ptr_t;

如果这是严格的 C,对于大多数具有“实习字符串”的编译器来说,这样的断言可以满足 - 重用指向现有常量字符串的指针,而不是将值复制到本地数组。 大多数编译器/链接器工具将统一对同一常量的所有引用。 请参阅如何在 C 或 C++ 中进行字符串实习?

请注意,不能保证实习 - 但我认为这是解决问题的唯一方法。 应该是讨论什么是 C 中“已定义”/“未定义”/“未指定”行为的好起点。


最初它被标记为 C++:如果这个问题是关于 C++ 重载operator == - 如果data类是开放的供您修改,那么您可以添加operator ==来满足该断言(您总是可以简单地从中返回true ) .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM