> char fname[2][LEN] = {0};
> char filename[LEN] = "file.doc";
これはポインタ使用ではない。

> for (i = 0, j = 0; filename[i] != 0 && filename[i] != '.'; i++,j++) {
2箇所あるfilenameの評価時
なお、蛇足ではあろうが、それぞれで
filename[i]が*(filename+i)の構文糖でありfilename+iもまたポインタである

> fname[0][j] = filename[i];
filename,fname,fname[0]の評価時。

> if (filename[i] == '.') i++;
filenameの評価時

> for (j = 0; filename[i] != 0; i++, j++) {
filenameの評価時

> fname[1][j] = filename[i];
filename,fname,fname[1]の評価時

> printf("%s\n", filename);
説明済。

> printf("%s %s\n", fname[0], fname[1]);
printf, "%s %s\n", fname(2回),fname[0],fname[1]の評価時

#include <stdio.h>は処理系に依存するためノーカンにしておく。
main自体の呼び出しやその前処理/後処理も処理系依存なので同様にノーカンとしておく。