now, i haven't programming in C or C++ in a long time, and have never used Visual Studio, but looking at the way you're going through the array, you HAVE TO use the -1. Here's why. Say your array is this:
{ 'a', 'p', 'p', 'l', e'}
The length of the array is 5, right? right. Well, array[5] is nothing (or the null terminator actually) because the first value is at position 0 (zero). So:
array[0] = 'a';
array[1] = 'p';
array[2] = 'p';
array[3] = 'l';
array[4] = 'e';
printing out array[5] will give you the null terminator (or an array index out of bounds exception in java). i'm guessing Visual Studio just ignores the null character and won't print it. maybe it's an OS/console specific display character, similar to '\n', '\r', and '\r\n' are. so in short, if you're going backwards, ALWAYS start at one less than the length.