boland 5.5コンパイラについての質問です。
文字列を逆順からコピーする関数のプログラミングの作業中に疑問が発生しました。
下記のNGソースはコンパイラはNGを出しませんが結果がNGです。
具体的にどのような理由で結果が正しく出ないのでしょうか。当方の実力では分かりかねますので
解説の程よろしくお願い致します。
引数1はコピー元となる文字列の先頭アドレスを渡しており引数2は逆順コピー先
となる配列の先頭アドレスを渡しております。

// NG
void strrev ( char *c_array , char *c_carray ) {

int i = 0 ;
while ( *c_array++ ) i++ ;
while ( i ) *c_carray = c_array[--i] ;
*c_carray = 0x00 ;

}


//OK
void strrev ( char *c_array , char *c_carray ) {

int i=0;
while ( c_array[++i] ) ;
while ( i ) *c_carray++ = c_array[--i] ;
*c_carray = 0x00 ;

}