我对C语言很陌生。
我有一个问题,我试图找到名字最长的学生,并从我的链接列表中删除他们。要做到这一点,我需要比较comp *name;对结构的每个成员的长度。
struct birthday{
char *name;
...
struct list_head list;
};
LIST_HEAD(birthday_list);
int simple_init(void)
{
struct birthday *person;
person = kmalloc(sizeof(*person), GFP_KERNEL);
person->name = "Alicia";
INIT_LIST_HEAD(&person->list);
list_add_tail(&person->list, $birthday_list);
person = kmalloc(sizeof(*person), GFP_KERNEL);
person->name = "Ben";
INIT_LIST_HEAD(&person->list);
list_add_tail(&person->list, $birthday_list);
person = kmalloc(sizeof(*person), GFP_KERNEL);
person->name = "Dave";
INIT_LIST_HEAD(&person->list);
list_add_tail(&person->list, $birthday_list);
...
struct birthday *ptr;
list_for_each_entry(ptr, &birthday_list, list)
{
printk(KERN_INFO "Name: %s\n",
ptr->name);
}
}
我想要的是比较Alicia和Ben,将Alicia存储为较长的名字,比较Alicia和Dave,并从链接列表中删除Alicia节点。我试了很多办法都没有用。如果有人有
对于字符串比较,可以尝试 strlen()
.
size_t strlen ( const char * str );