I can't really help you out then. I'm not very good with algorithms and I don't have the time to try to make it work.
I can probably help you out with some theory.
You've to send the whole array of patientlist's (patient) to the function, else it will not have anything to compare. The example you have made (bubbleSort()) does not sort multiple arrays, only one! In your patientlist-structure, you have array of strings - and it isn't those array that have to be sorted, it is the array of arrays, if we can say it in that way. That's the reason why you have to send the whole array of patientlist's to the function. When that is said, you have to use something similar to the example you came with. Compare each character, for one or two, or maybe them all in one time, and then exchange the strings - but do not forget to exchange the other strings in the array too, they belong the exchanged string.
To make it a bit clearer, look at this...
Code:
int x, y;
for(x = 0; x < 5; x++)
{
for(y = 0; y < strlen(patient[x].surname); y++)
{
/*
We can now compare patient[x].surname[y] with
patient[x].surname[y+1]. Each of them contains a
character. And of course, when it's in ascending
order, you're gonna compare using the '<' operator.
That's because the smallest value (ASCII) is going
to be the first in the array.
*/
}
}
Hope you understood just a bit.
Good luck!