Прежде всего: int strcmp (const char * str1, const char * str2) сравнивает две C-строки (указатели на символы). Это означает, что a.name [i] должен быть указателем на символ, а не символом! Убедитесь, что это так (т.е. убедитесь, что a.name является массивом массивов c-строки, а не массивом символов).
Во-вторых, если предыдущий случай имеет место, ваш код будет сравнивать только строку i со строкой i + 1. Он не будет сравнивать все строки друг с другом.
В любом случае, похоже, что вы не делаете то, что хотите, и хотите делать правильно. Я предполагаю, что вы хотите структуру, которая определяется следующим образом:
struct example {
char * name;
// other members of choice
example * next;
}
Заполнитель для имени, других членов и следующего указателя для включения типа данных связанного списка. Таким образом, вы можете сравнить имена с:
while (list->next != 0 && list->next->next != 0) {
if (strcmp(list->name, list->next->name) == 0) // do something;
else // do something else;
}
или с двойным циклом, если вы хотите сравнить все строки друг с другом.