//------------------------------------------------------------------------- int cJasenet::TeeBak(const string &bak_tark) { bak_nimi = Tiedoston_nimi(); vaihda_tarkennin(bak_nimi,bak_tark); remove(bak_nimi); /* Vanha .BAK täytyy poistaa jotta rename toimii */ return rename(Tiedoston_nimi(),bak_nimi); } ... //------------------------------------------------------------------------- const char *cJasenet::talleta(const string &tied) { if ( !muutettu ) return NULL; string tiedosto(tied); if ( tied == "" ) tiedosto = tiedoston_nimi; ofstream f(tiedosto.c_str()); if ( !f ) return TIED_EI_AUKEA; f << koko_nimi << endl; f << max_lkm << endl; if ( !f ) return OTS_EI_KIRJ; for (int i=0; i<lkm; i++) { f << *alkiot[i] << endl; if ( !f ) return ALKIO_EI_KIRJ; } muutettu = 0; tiedoston_nimi = tiedosto; return NULL; }Myös kommentit kannattaisi tavalla tai toisella siirtää vanhasta alkuperäisestä tiedostosta. Tätä varten voisimme kirjoittaa aliohjelman
kopioi_kommentit(f,bak_nimi)Myöhemmin ehkä käytännössä huomataan, että olisi siistimpää tulostaa kenttiä hieman täsmällisemmin allekkain - kuten alkuperäisessä suunnitelmassa oli. Tämä voitaisiin toteuttaa mallirivin avulla, missä mallirivi on alkuperäisen tiedoston kommenteista luettu rivi. Tästä rivistä tutkitaan erotinmerkkien paikkoja ja pyritään saamaan erotinmerkit vastaaviin paikkoihin myös tulosjonossa.