fopenでオープンしたファイルをオープンしたままの状態で(fcloseせずに)
中身をゼロバイトにする方法ってあるんでしょうか?
やはり、クローズしてからwモードでオープンしないと駄目なんでしょうか?

rewindしてから上書きしても前の内容が残っていて不都合がでるんです。
オープン直後にファイルをロックしているので、
クローズせずにオープンしたままの状態でファイルサイズをゼロにしたいのです。

つまりこのようにしたいのです。

log = fopen(LOG,"r+")
flock( fileno(log), LOCK_EX );
fgets(buf, MAXLEN, log)

//ここでファイル(logの)サイズをゼロにしたい

fprintf(log, " //

fclose(log);
flock( fileno(log), LOCK_UN );