> countryList[i] = (char*) calloc (strlen(tempAry), sizeof(char));
1. Don't cast the result of malloc/calloc etc - see the FAQ for why.
2. You don't count the \0, so the strcpy which follows is instant buffer overflow.
> countryList[i] = (char*) calloc (strlen(tempAry), sizeof(char));
> countryList[numCountries] = '\0';
When you exit the loop, i == numCountries, so this is just a memory leak.
'\0' silently becomes NULL with this assignment.
Edit:
Bah, way way too late - the party is over.