First to mention, char arrays are stored in memory with additional (termination) character '\0' added at the end of array, so we can first call recursions until that char is found, and then printing each chars while going back from recursions, so here is my solution.
// Parameter 'str' is an address to current character in array
// When calling this function from main, str is an address to first character in array
void printCharsOpposit(char* str) {
if (*str != '\0') {
printCharsOpposit(str + 1);
printf("%c", *str);
}
}
And test for function:
int main() {
char str[] = "abcd.";
printCharsOpposit(str);
}