Rivinumero tiedostosta luettaessa C++

Katja

Pitäisi saada luettua tiedostosta rivit ja lisättyä tulostuksessa jokaisen rivin eteen rivinumero tyyliin /* 01 */ . Miten tämä onnistuu?

14

969

Äänestä

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • adagad

      FILE *data;
      char line[320];
      int counter=0;

      if((data=fopen("teksti.txt","rt"))==NULL)return;
      while(feof(data)){
      fgets(data,320,data);
      sprintf(stdout,"/* �4 */ %s
      ",counter,line);
      counter ;
      }
      fclose(data);

      • mattiaz

        adangadin koodi:
        FILE *data;
        char line[320];
        int counter=0;

        if((data=fopen("teksti.txt","rt"))==NULL)return;
        while(feof(data)){
        fgets(line,320,data); //


      • adagad
        mattiaz kirjoitti:

        adangadin koodi:
        FILE *data;
        char line[320];
        int counter=0;

        if((data=fopen("teksti.txt","rt"))==NULL)return;
        while(feof(data)){
        fgets(line,320,data); //

        niin ei tunnut missään


      • Mik
        mattiaz kirjoitti:

        adangadin koodi:
        FILE *data;
        char line[320];
        int counter=0;

        if((data=fopen("teksti.txt","rt"))==NULL)return;
        while(feof(data)){
        fgets(line,320,data); //

        Esimerkki bugaa, sillä:
        -rivejä ei lueta koskaan, sillä whilen feof palauttaa nollan, kun ei olla tiedoston lopussa (testi pitää olla !feof(..))
        -se ei näytä hallitsevan ylipitkiä rivejä siististi (yli 320 merkkiä)
        -sprintf:n 1. argumentti on char *, ei FILE *
        -format string �4 pitäisi käsittääkseni olla d
        -fgets:n paluuarvoa ei tarkisteta ollenkaan


    • Mik

      #include
      #include
      #include

      int main(int argc,char *argv[]) {
      FILE *fp;
      char line[100];
      unsigned int lineno = 1;

      if ( (fp = fopen(argv[1], "r")) == NULL ) {
      printf("open error!
      ");
      return EXIT_FAILURE;
      }

      while( fgets(line, sizeof(line), fp) != NULL) {
      printf("/* %u */ ", lineno);
      do {
      printf("%s", line);
      if (strchr(line, '
      '))
      break;
      if (fgets(line, sizeof(line), fp) == NULL)
      break;
      } while(1);
      lineno ;
      }

      fclose(fp);
      return EXIT_SUCCESS;
      }

      Tämä hallitsee myös ylipitkät rivit. Luettava tekstitiedosto annetaan ohjelmalle ensimmäisenä argumenttina.

      • KLK

        kutsuhan ohjelmaasi ilman argumenttia

        if (argc == 2)
        {
        /***/
        }


      • Mik
        KLK kirjoitti:

        kutsuhan ohjelmaasi ilman argumenttia

        if (argc == 2)
        {
        /***/
        }

        Tuttuun tyyliin jäljelle jäävien (sangen itsestäänselvien) virhetarkistusten tekeminen jätetään harjoitustehtäväksi.

        Tässä foorumissakin näyttää olevan bugi, sillä ja n peräkkäin ei tulostu kuten pitää. Foorumi tekee niiden kohdalla rivinvaihdon. Antamaani esimerkkiin pitää siis laittaa korjaus riveille, missä sijaitsevat 1. printf ja strchr.


      • Mik
        Mik kirjoitti:

        Tuttuun tyyliin jäljelle jäävien (sangen itsestäänselvien) virhetarkistusten tekeminen jätetään harjoitustehtäväksi.

        Tässä foorumissakin näyttää olevan bugi, sillä ja n peräkkäin ei tulostu kuten pitää. Foorumi tekee niiden kohdalla rivinvaihdon. Antamaani esimerkkiin pitää siis laittaa korjaus riveille, missä sijaitsevat 1. printf ja strchr.

        Kylläpäs bugaa oikein urakalla. Viestin esikatselussa homma toimii, mutta lopullisessa viestissä ei. Ehkä kaksi kenoa peräkkäin tekee yhden kenon ? \

        Piti siis kirjoittaa, että "..sillä \ ja n.."


      • pöhkö
        Mik kirjoitti:

        Kylläpäs bugaa oikein urakalla. Viestin esikatselussa homma toimii, mutta lopullisessa viestissä ei. Ehkä kaksi kenoa peräkkäin tekee yhden kenon ? \

        Piti siis kirjoittaa, että "..sillä \ ja n.."

        d
        x
        h


      • Abc
        Mik kirjoitti:

        Tuttuun tyyliin jäljelle jäävien (sangen itsestäänselvien) virhetarkistusten tekeminen jätetään harjoitustehtäväksi.

        Tässä foorumissakin näyttää olevan bugi, sillä ja n peräkkäin ei tulostu kuten pitää. Foorumi tekee niiden kohdalla rivinvaihdon. Antamaani esimerkkiin pitää siis laittaa korjaus riveille, missä sijaitsevat 1. printf ja strchr.

        Mitähän muuta hauskaa foorumin softasta löytyykään....

        :::a:::
        ::::::
        :::c:::
        :::d:::
        :::e:::
        :::f:::
        :::g:::
        :::h:::
        :::i:::
        :::j:::
        :::k:::
        :::l:::
        :::m:::
        :::
        :::
        :::o:::
        :::p:::
        :::q:::
        :::
        :::
        :::s:::
        ::: :::
        :::u:::
        :::v:::
        :::w:::
        :::x:::
        :::y:::
        :::z:::

        Ohjelmakoodin esittämistä ajatellen surkea foorumi!


      • Abc
        Abc kirjoitti:

        Mitähän muuta hauskaa foorumin softasta löytyykään....

        :::a:::
        ::::::
        :::c:::
        :::d:::
        :::e:::
        :::f:::
        :::g:::
        :::h:::
        :::i:::
        :::j:::
        :::k:::
        :::l:::
        :::m:::
        :::
        :::
        :::o:::
        :::p:::
        :::q:::
        :::
        :::
        :::s:::
        ::: :::
        :::u:::
        :::v:::
        :::w:::
        :::x:::
        :::y:::
        :::z:::

        Ohjelmakoodin esittämistä ajatellen surkea foorumi!

        while( fgets(line, sizeof(line), fp) != NULL) {
        printf("/* %u */ ", lineno);
        do {
        printf("%s", line);
        if (strchr(line, '\n'))
        break;
        if (fgets(line, sizeof(line), fp) == NULL)
        break;
        } while(1);
        lineno ;
        }


      • Abc
        Abc kirjoitti:

        Mitähän muuta hauskaa foorumin softasta löytyykään....

        :::a:::
        ::::::
        :::c:::
        :::d:::
        :::e:::
        :::f:::
        :::g:::
        :::h:::
        :::i:::
        :::j:::
        :::k:::
        :::l:::
        :::m:::
        :::
        :::
        :::o:::
        :::p:::
        :::q:::
        :::
        :::
        :::s:::
        ::: :::
        :::u:::
        :::v:::
        :::w:::
        :::x:::
        :::y:::
        :::z:::

        Ohjelmakoodin esittämistä ajatellen surkea foorumi!

        while( fgets(line, sizeof(line), fp) != NULL) {
           printf("/* %u */ ", lineno);
           do {
              printf("%s", line);
              if (strchr(line, '
        '))
                 break;
              if (fgets(line, sizeof(line), fp) == NULL)
                 break;
           } while(1);
           lineno ;
        }


      • Abc
        Abc kirjoitti:

        while( fgets(line, sizeof(line), fp) != NULL) {
           printf("/* %u */ ", lineno);
           do {
              printf("%s", line);
              if (strchr(line, '
        '))
                 break;
              if (fgets(line, sizeof(line), fp) == NULL)
                 break;
           } while(1);
           lineno ;
        }

        Sisentäminen EI onnistu sarkainmerkillä (\t), mutta merkkikoodilla 255 riville saa "välilyönnin", jota järjestelmä ei siivoa pois.

        ...luettavan koodin liittäminen foorumin sivuille onnistuu sittenkin muutamalla pienillä korvausoperaatiolla.


      • Mik
        Abc kirjoitti:

        Sisentäminen EI onnistu sarkainmerkillä (\t), mutta merkkikoodilla 255 riville saa "välilyönnin", jota järjestelmä ei siivoa pois.

        ...luettavan koodin liittäminen foorumin sivuille onnistuu sittenkin muutamalla pienillä korvausoperaatiolla.

        Kaiken lisäksi foorumi ei näytä osaavan muuttaa oikein joitakin erikoismerkkejä. Joskus ainakin otsikoissa &-merkki jää kääntämättä html:stä, ja sen tilalla lukee & amp;..

        Näköjään html suodatetaan myös, eikä tekstiä yritetä tulkita ollenkaan ns. as-is. & ja amp; kirjoitettuna peräkkäin suodatetaan, jolloin tekstin esikatselussa näkyy vain pelkkä &.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Putin hoiti Suomen natoon ja myös Ruotsin

      Iso kiitos Vladimir Putinille. Hänen ansiosta pääsemme nyt Natoon. Putin halusi Naton lähelle ja nyt sai. Voimme tästä kiittää vain Putinia.
      Maailman menoa
      650
      7987
    2. Niinistö teki hetkessä Suomesta Venäjän ydinaseiden maalitaulun

      Kaiken lisäksi mies vielä lällätteli Putinille eilisessä tiedotustilaisuudessa ja käski katsomaan itseään peiliin. Kyllä vähän asiallisempaa käytöstä
      Maailman menoa
      466
      2270
    3. Voi Stefu ja sun kiivas luonteesi

      Sielä lentelee ullakkohuoneiston ikkunasta daamin vaatteet ja matkalaukut pitkin pihaa. Toisaalta,en ihmettele yhtään että tämä suhde päättyi näin,kyl
      Kotimaiset julkkisjuorut
      233
      2186
    4. Poliisi otti Stefun kiinni!

      Seiska tietää kertoa.
      Kotimaiset julkkisjuorut
      147
      1759
    5. Ohhoh! Martina Aitolehti ja seurapiirihurmuri-Jesper ekassa yhteiskuvassa - Sutinaa Mallorcalla!

      Martina Aitolehti ja seurapiirijulkkis-Jesper nauttivat toisistaan varsin vauhdikkaissa merkeissä Mallorcalla. Aitolehti ei ole esitellyt rakastaan vi
      Kotimaiset julkkisjuorut
      25
      1250
    6. Veikkaus: Miten The Rasmus pärjää Euroviisuissa?

      Euroviisuhuuma on ylimmillään, kun Suomi ja The Rasmus taistelee biisillään Jezebel. Bändi on tikissä, kunhan Lauri Ylösen ääni kantaa. Mitä veikka
      Viihde ja kulttuuri
      51
      1236
    7. Stefanilta tuli taas karu totuus Sofiasta

      Marokkolainen h*o*ra! Voi tsiisus kun mulla on hauskaa! Lumput lentää ikkunasta kun Stefu raivoaa h*uralleen🤣🤣🤣 Nyt ne popparit tulille, tästä tule
      Kotimaiset julkkisjuorut
      110
      1153
    8. Ootko onnellinen kun ei tarvitse

      nähdä tätä tyhmää naamaa enää koskaan? Multa se särkee sydämen, mutta minkäs teen. Vaikka olisi kuinka sinnikäs eikä hellittäisi, se ei aina auta.
      Ikävä
      65
      843
    9. Steppuli veressä

      Seiskan lööpissä Steppulilla naama ja nyrkit veressä. Ei tainnut ihan kamojen pihalle paiskominen riittää. Onkohan pistänyt kämpän tuusannuuskaks.
      Kotimaiset julkkisjuorut
      58
      798
    10. Oletko nähnyt eroottiset kohuleffat? Fifty Shades Of Grey -trilogia tv:stä

      Fifty Shades -trilogia starttaa, kun nuori opiskelijanainen Anastasia tapaa rikkaan liikemiehen. Seksisuhdehan siitä starttaa, höystettynä sadistisill
      Suhteet
      7
      747
    Aihe