C, printing String reverse..

Here is my code!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/*
* char *strcpy(char *s, const char *ct);
* Copies ct to s including terminating NUL and returns s.
*/
 
/**
* size t strlen(const char *cs);
* Returns length of cs.
*/
 
void print_reverse(char *s) {
    size_t len = strlen(s);
    char copy[len];
    strcpy(copy,s);
    while(len > 0){
        printf("%c",copy[len-1]);
        len--;
    }
}
 
int main(){
    char *str = "KORAY";
    print_reverse(str);
    return 0;
}

This works too..
void other_reverse(char *s) {
    size_t len = strlen(s);
    char *t = s + len - 1;
    while(t>=s){
        printf("%c",*t);
        t = t - 1;
    }
}
 
int main(){
    char *str = "KORAY";
    other_reverse(str);
    return 0;
}

And so does this!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void printStringReverse(char x[]){
    int counter = 0;
    while(x[counter] != '\0'){
        counter++;
    }
    while(counter != -1){
        printf("%c",x[counter]);
    counter--;
    }
}