Для начала я не вижу сортировки выбора. Кажется, вы имеете в виду сортировку вставкой.
Массивы не имеют оператора присваивания. Поэтому операторы типа
names[b+1].name = y;
, в которых вы пытаетесь присвоить массив, недопустимы.
И в операторах, подобных этому
y = names[a];
, вы пытаетесь назначить объект типа структуры в массив символов.
Кроме того, циклы также являются неправильными.
Массив имеет только 3 элемента. Так что неясно, что маги c номер 4 делают в этом l oop
for(a=0; a<4; a++){
, и этот l oop
for(b=(a-1); b>=0 && x<(names[b].name[0]); b--){
пропускает первую итерацию, когда a равно 0.
Вот демонстрационная программа, которая показывает, как сортировка выбора может быть применена к элементам вашего массива.
#include <stdio.h>
#include <string.h>
#define LENGTH 25
typedef struct
{
char name[LENGTH];
} NAME;
int main(void)
{
NAME names[] =
{
{ "Zumbazukiba" },
{ "Ademiro" },
{ "Haroldo Costa" }
};
const size_t N = sizeof( names ) / sizeof( *names );
for ( size_t i = 0; i < N; i++ )
{
puts( names[i].name );
}
putchar( '\n' );
for ( size_t i = 0; i < N; i++ )
{
size_t min = i;
for ( size_t j = i + 1; j < N; j++ )
{
if ( strcmp( names[j].name, names[min].name ) < 0 )
{
min = j;
}
}
if ( i != min )
{
NAME tmp = names[i];
names[i] = names[min];
names[min] = tmp;
}
}
for ( size_t i = 0; i < N; i++ )
{
puts( names[i].name );
}
putchar( '\n' );
return 0;
}
Вывод программы:
Zumbazukiba
Ademiro
Haroldo Costa
Ademiro
Haroldo Costa
Zumbazukiba