Q:

How to do a reverse char copy in C++

Hi guys so I am having some trouble with my reverse copy method. The method needs to copy the char* in reverse. 
char* reverseCopy(char* destination, const char* source, int num)
{
    char placeHolder;
    for (int j=0; j<=num; j++)
    {
        strcpy(destination,source);
    }

    for (int i=0; i<num; num--)
    {
        placeHolder = destination[num];
        destination[i]=placeHolder;
    }
    destination[num]='\0';
    return destination;
}

Destination is where the copy is being stored.
Source is copied char
Num is the number of characters in the array 
Any insight is appreciated. Thanks

A:

But there are easier and faster ways to do this:
For example why do you need to copy the source to the destination in a loop?
And what if destination == source?
Also this loop:
for (int i=0; i<num; num--)
{
    placeHolder = destination[num];
    destination[i]=placeHolder;
}

Is incorrectly written and even it was a proper written loop, you would override the non reverted data in the destination.
I hope something like this would work (taking care of the case that source == destination is possible):
char* reverseCopy(char* destination, const char* source, int num) {
    if (destination != source)
    {
        std::copy ( source, source + num - 1, destination );
    }
    std::reverse(destination ,destination + num - 1);
    destination[num-1] = '\0';

    return destination;
}

