Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tiedoston rivien määrä

Resiina [14.06.2007 19:03:31]

#

Olen tässä yrittänyt tehdä funktiota, joka kertoisi tiedoston pituuden, siis rivien määrän.

long pituus(string tiedosto_nimi)
{
        long tiedosto_pituus;
        char teksti[2];
        FILE *tiedosto = fopen(tiedosto_nimi.c_str(), "r");
        while (!feof(tiedosto))
        {
              fgets(teksti, 2, tiedosto);
              tiedosto_pituus++;
        }
        fclose(tiedosto);
        return tiedosto_pituus;
}

nimet.txt:n sisältö:

Pasi
123
Heikki
1337
Erkki
715517
Hannu
7051

Tässä tapauksessa pituus("nimet.txt") palauttaa 16429

Sami [14.06.2007 19:06:12]

#

Alusta se laskuri! Alustamattomana tiedosto_pituus voi sisältää käytännössä mitä vain.

Resiina [14.06.2007 19:07:38]

#

long tiedosto_pituus = 0;

Nyt se palauttaa 45

Sami [14.06.2007 19:14:00]

#

Tosiaan, tuohan laskee tällä hetkellä tiedoston sisältämien merkkien määrän, eikä rivinvaihtojen määrää. Mikäli haluat laskea vain rivinvaihtojen määrän, niin sinun pitää lisätä jokin tarkistus, että onko luettu merkki rivinvaihto ja jos näin on, niin kasvatat laskuria.

Esim.

if (teksti[0] == '/n') tiedosto_pituus++;

'/n' tosin ei ole välttämättä ainoa tapa merkitä rivinvaihtoa, sillä eri käyttöjärjestelmät ja ohjelmat käyttävät joko tapaa /n, /r tai /r/n.

Resiina [14.06.2007 19:20:07]

#

Joo nyt toimiikin kiitos kiitos. Ja noi on muutes \-merkillä toimivia eikä /:llä.

Sami [14.06.2007 19:21:12]

#

Aivokäpy :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta