After looking through your code I think your problem is that you don't understand the difference between pointers and arrays.
If you want to have an array of "phone" elements you either need to use a static array like
or a dynamic array like
Your function declarations and calls would look like:
phone *phonebook = malloc(sizeof(*phonebook) * nr_of_entries);
Using a second parameter for the actual size of the array gets rid of the global counter.
void PrintEntries(phone pbook, int size); // plural because you print all entries not just one