(H) Tiedoston rivien numerointi¶
Tavoite: Opettelen tekstitiedostosta lukemista ja siihen kirjoittamista.
Ohjeita:
Luo uusi projekti: student/05/line_numbers/
.
Toteuta ohjelma, joka lukee tiedoston ja kirjoittaa sen sisällön toiseen tekstitiedostoon siten, että jokaisen rivin alkuun on lisätty kyseisen rivin järjestysnumero ja välilyönti.
Aluksi ohjelma kysyy käyttäjältä, mistä tiedostosta tekstiä luetaan ja mihin tiedostoon tekstiä kirjoitetaan. Mikäli input-tiedosto saadaan avattua, ohjelma ei tulosta näytölle muuta:
Input file: a.input
Output file: a.output
Mikäli input-tiedostoa ei kyetä jostain syystä avaamaan, tulostetaan käyttäjälle virheilmoitus ja ohjelman suoritus lopetetaan paluuarvolla EXIT_FAILURE:
Input file: not_a_file.input
Output file: a.output
Error! The file not_a_file.input cannot be opened.
Jos tiedostossa a.input
olisi tallennettuna seuraava teksti:
Yogi has a best friend too
Boo Boo, Boo Boo
Yogi has a best friend too
Boo Boo, Boo Boo Bear
Boo Boo, Boo Boo Bear
Boo Boo, Boo Boo Bear
Yogi has a best friend too
Boo Boo, Boo Boo Bear
niin ohjelma kirjoittaisi ensimmäisessä esimerkkisuorituksessa
tiedostoon a.output
rivit:
1 Yogi has a best friend too
2 Boo Boo, Boo Boo
3 Yogi has a best friend too
4 Boo Boo, Boo Boo Bear
5 Boo Boo, Boo Boo Bear
6 Boo Boo, Boo Boo Bear
7 Yogi has a best friend too
8 Boo Boo, Boo Boo Bear
Vinkkejä tehtävän tekemiseen:
Huomioi, että syötetiedoston pitää olla talletettuna siihen hakemistoon, jossa ohjelma suoritetaan. Jos et ole muuttanut oletusasetuksia, Qt Creator kääntää ohjelman hakemistoon, jonka nimi alkaa
build-
ja joka on lähdekoodihakemiston rinnalla, ja myös suorittaa ohjelman ko. hakemistossa.Ohjelman suorituskansion voi muuttaa Qt Creatorissa valitsemalla vasemmalta
Project
ja vaihtamalla “Build directory” -kenttään polun, jossa haluaa, että ohjelma suoritetaan. Tässä tapauksessa siis se kansio, jossa ohjelman kooditiedostot ovat elistudent/05/line_numbers
.Kun tämän jälkeen käännät ohjelman, huomaat, että kääntäjä on luonut ohjelman kääntämistä ja suorittamista varten useita tiedostoja kansioon, jossa ohjelmakooditiedostot ovat. Sinun ei tarvitse välittää näistä tiedostoista, eikä niitä tarvitse lisätä versionhallintaan.
Luomiasi tekstitiedostoja ei tarvitse lisätä versionhallintaan.
Kannattaa jälleen toteuttaa ohjelma osissa. Esimerkiksi voit ensin tehdä ohjelman, joka vain tulostaa tiedoston rivit yksi kerrallaan. Tämän jälkeen voit lisätä tulosteeseen rivinumerot ja lopulta näytölle tulostamisen sijaan kirjoittaa tekstin tiedostoon.
Muista, että tiedostojen käsittely vaati C++:ssa
fstream
-kirjaston sisällyttämistä kooditiedoston alussa.Muista, että tiedostojen käsittelyssä on kolme osaa: avaaminen, kirjoittaminen/lukeminen ja sulkeminen. Muista siis myös sulkea avaamasi tiedostot, kun ohjelma ei enää käsittele niitä.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.