我有一个程序,根据存储在其中的“名称”将结构放在链表中。
要在列表中找到它们的位置,我需要弄清楚im插入的名称是在字母表中是早于还是稍后,而不是在它旁边的结构中。
名称位于我可以访问的结构内部。 我不需要完整的共同比较,如果这是更多的工作,即使只是第一个字母是好的。
感谢您的帮助!
答案 0 :(得分:1)
如果您有两个C字符串a
和b
,则可以简单地比较它们的第一个元素:
*a == *b
==
可以是六个关系运算符中的任何一个。
请记住,对于C字符串,char*
指向字符串中的第一个字符。
答案 1 :(得分:1)
strcmp()
比较两个C字符串,并告诉您它们处于什么顺序,或者它们是否相同。如果您不关心案例,可以使用strcasecmp()
。这些函数不会比确定要返回的顺序所需的更多字符串进行比较。
答案 2 :(得分:1)
我不清楚你的问题是什么,但这样的事情会起作用:
if (node1->name[0] <= node2->name[0]) {
...
} else {
...
}
这将比较每个节点中名称的第一个字母。
答案 3 :(得分:1)
您可以简单地遍历列表并根据传递每个元素时所做的比较将新元素插入到正确的位置。最简单的区分大小写的版本可以通过比较字母的数值来完成(例如a[0] < b[0]
),或者如果你想要不区分大小写,你可以将它们转换成一个常见的情况(参见ctype.h
)。或者您可以将整个单词与strcmp
进行比较。