Fwrite () перезаписывает при вызове несколько раз? - PullRequest
0 голосов
/ 24 февраля 2020

Пример: я просматриваю дерево и пишу текст на основе обхода предварительного заказа.

Это псевдокод:

void func x ('','')
{
  do something 
  helper (char * filename, thing to be written);
}

void helper (char * filename, thing to be written)
{
  FILE * fp = fopen (filename,"w");
  fwrite(, , ,fp);
  fclose(fp);
  return 0;
}

Будет ли он перезаписывать предыдущие записи? Если так, как я могу предотвратить это? Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 24 февраля 2020

Как упомянул kaylum, краткий ответ - да, это так.

fopen с "w" откроет файл в начале, поэтому любые записи будут обрезаны и перезаписаны. Чтобы избежать этого, либо повторно используйте указатель файла, возвращаемый fopen каждый раз, либо используйте «a» для установки fwrite в режим добавления.

...