Well you can't "remove" elements from an array in C. But you can count the elements that does not match name, create a new array on the heap, and copy all elements of interest. The basic code could look like this, however, you should make it safe, don't use the same identifier for the struct tag and typename, and return the size of the new array.
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;
}