Как сравнить длину двух строк из двух членов структуры? - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в 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);
}
}

То, что я ищу, - это сравнить Алисию с Беном, сохранить Алисию как более длинное имя, сравнить Алисию с Дейвом и удалить узел Алисии из связанного списка. Я столько всего перепробовал, но безуспешно. Если у кого есть

1 Ответ

0 голосов
/ 18 июня 2020

Для сравнения строк попробуйте strlen().

size_t strlen ( const char * str );

...