I hope this makes sense, if not, post and I'll try to be more clear. Also, if this is not what you intend to do, please don't take it as condecending or an insult, just post your logic and what you think it should do, and what it is actually doing. I'm making an inference b/c you didn't really post enough info. That being said, try this:
I don't understand your logic. Are you trying to put 11 names into the array char[11]? If so, that's not right. If you are, you need to have a 2d array.
The array char[11] is 11 contiguious characters in memroy, and the statment c_ptr = name; assigns c_ptr to the first character in the array.
The array char[11] is not 11 pointers to characters, it's a pointer to 11 characters, and the gets(c_ptr) fills up to 11 characters of the array. So, essientally you are overwriting the same array every time you run the for loop, and the very last person is left in the array. Also, if the name is more than 11 characters long, the array will be overfilled, but I think that gets will return a null pointer.
If you want an arrray of 11 names, you need to have 11 pointers to characters, not a pointer to 11 characters, which is what the array is. As always, I hope that helped!
Disclaimer:
Beware: Studies have shown that research causes cancer in lab rats.