Ну, вы не можете "удалить" элементы из массива в C. Но вы можете сосчитать элементы, которые не соответствуют name , создать новый массив в куче и скопировать все интересующие элементы,Базовый код может выглядеть следующим образом, однако вы должны сделать его безопасным, не использовать один и тот же идентификатор для тега struct и typename и возвращать размер нового массива.
score_entry *sortout(score_entry *array, char* string) {
score_entry *newarray;
int i, n=0;
/* measure the size of the filtered array copy */
for(i=0; i<1000; i++) {
if (strcmp(array[i].name, string) n++;
}
/* allocate space for the filtered copy */
newarray = (score_entry*)calloc(n, sizeof(score_entry));
/* filter and copy the data */
for(i=0, n=0 ; i<1000; i++) {
if (strcmp(array[i].name, string))
newarray[n++] = array[i];
}
return newarray;
}