> fp[3]=fopen("data3.dat","w");
> ↑        ~~
> この辺の宣言をiを使って一気に書くことは可能ですか?
sprintfなどを使ってファイル名を作ればできます。

> 実は、書き出しファイル数は300ぐらいにしたいのですが
多いね。はじめに全部開くのは無理かも。
ループ処理の中でfopen,fcloseする方法で我慢したほうがいいかな。
ファイル名は前述のようにsprintfでも使えば簡単にできるし。