limpar / truncar o arquivo em C quando já estiver aberto no modo "r +"

Meu código atualmente se parece com algo assim (essas etapas divididas em várias funções):

/* open file */
FILE *file = fopen(filename, "r+");

if(!file) {

  /* read the file */

  /* modify the data */

  /* truncate file (how does this work?)*/

  /* write new data into file */

  /* close file */
  fclose(file);
}

Eu sei que eu poderia abrir o arquivo com in"w" modo, mas eu não quero fazer isso neste caso. Eu sei que tem uma funçãoftruncate emunistd.h/sys/types.h, mas eu não quero usar essas funções meu código deve ser altamente portátil (no windows também).

Existe a possibilidade de limpar um arquivo sem fechar / reabri-lo?

questionAnswers(2)

yourAnswerToTheQuestion