egabbac
torrac
noino

と表示させるプログラムを作りたいのですが、下のコードを実行すると

egabbac■(実際は■の半分くらいの長方形)
 torrac egabbec■
  noino  torrac egabbec■

となります。
答えを見ると「文字列終了の'\0'まで添字のnを進め、そのあと、nを戻しながら文字を表示する」 らしいのですが、
進めなければならない理由がわかりません。直接後ろから表示させるのはなぜ無理なのでしょうか。
ご教授いただきたいです。よろしくお願いします。

#include <stdio.h>
int main(void)
{
char str[3][8] = {"cabbage", "carrot", "onion"};
int i, n;
for (i = 0; i < 3; i++) {
n = 6;
while (str[i][n] >= 0) {
printf("%c", str[i][n]);
n--;
}
printf("\n");
}
return 0;
}