Tekstin korvaaminen C:ssä

mitenmiten

Miten C:ssä voi korvata tekstiä jossakin merkkijonossa, C :lle löysin tällaisen esimerkin, mut C:lle en löytänyt ohjeita.


#include
#include

using namespace std;

int main () {
string Teksti = "The Lord of the Rings";

Teksti.replace (Teksti.find ( "Lord"), 4, "lord" );

cout

3

428

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Keijo

      Jotensakkin tälleen menee "vastaava" koodi.

      Tarkistuksia ei tehdä. Funktio strstr() palauttaa NULL jos alimerkkijonoa ei löydy, jolloin ilman tarkistuksia menee asiat pieleen..

      #include
      #include

      int main(int argc, char *argv[])
      {
      char *merkkijono = "The Lord of the Rings";

      strncpy(strstr(merkkijono, "Lord"), "lord", 4);

      printf("%s\n", merkkijono);
      }

      Hyvää lunttausapua merkkijonoihin liittyen:
      http://www.cppreference.com/stdstring.html

      • Pääsääntöisesti strcpy/strncpy kopioi vielä NULL-merkin loppuun, joten merkkijono voi tavallaan lyhentyä, jos ollaan korvaamassa sanaa merkkijonon alusta. Tässä tapauksessa homma toiminee, koska strncpy:lle annetaan 4, joka on muutettavan sanan pituus ilman NULLia (strncpy ei kopioi NULLia, koska sitä ei tule vastaan viimeistään neljännen merkin kohdalla). Lisäksi strncpy-temppu toiminee helposti vain niille korvauksille, joissa muunnettavan sanan pituus on yhtä paljon kuin muutetun sanan pituus.


      • ccode

        Ei tällaista koodia saa kirjoittaa. Standardin mukaan
        toiminta on määrittelemätön.

        /* tätä merkkijonoa ei voi muokata */
        char *merkkijono = "The Lord of the Rings";

        /* tätä voi muokata */
        char merkkijono[] = "The Lord of the Rings";

        /* tätä voi muokata */
        char *merkkijono = strdup("The Lord of the Ring");

        /*
        * tässä kirjoitetaan vakiomerkkijonon päälle
        * jos tilanvaraus tehdään väärin.
        */
        strncpy(strstr(merkkijono, "Lord"), "lord", 4);


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

    Luetuimmat keskustelut

    1. Kuka tekee näitä aloituksia

      jotka aina ovat tällaisia.... Nämä on jonkun saman ihmisen käsialaa, joka paukuttaa tänne loputtomasti ketjuja, joissa
      Ikävä
      35
      3922
    2. Persujen kannatusromahduksen syynä bensan ja kaljan hinnan nostot

      Marinin aikaan bensalitra 1,3e ja laatikon Sandelsia sai Lidlistaä 22 eurolla. Nyt hinnat ovat nousseet noin 50 prosent
      Maailman menoa
      247
      3429
    3. Juhana Vartiainen(ex-sd): Köyhien pitää tehdä jotain elämälleen säilyttääkseen tukensa

      Juhana Vartiainen ehdottaa Suomeen ”Tanskan mallia”, jossa sosiaaliturvaa saadakseen pitäisi hakea ensisijaisesti etuuks
      Maailman menoa
      250
      3218
    4. Miksi tunnustukselliset muslimit saapuvat länteen?

      Onko koskaan kysytty, että miksi islamilaisesta maailmasta tuleva tunnustuksellinen muslimi tarvitsisi turvapaikkaa väär
      Maailman menoa
      267
      2487
    5. En ymmärrä näitä SDP:n ja muun vasemmiston kannattajia

      Eivätkö ihmiset tiedä, että Suomen ongelmat johtuvat vasemmistolaisesta yhteiskuntamallista? Suomessa on ollut vasemmis
      Maailman menoa
      126
      1717
    6. Oot mahtava tyyppi

      En tiedä luetko palstaa. Koitan siitä huolimatta. Oot mun mielestä tosi erityinen tyyppi. Nopeesti taisin ihastua. Jot
      Ikävä
      26
      1689
    7. Rydmanin nousu sote-ministeriksi on kauttaaltaan irvokas

      Mutta samalla se oli ainut todennäköinen lopputulema. Se myös alleviivaa sitä, mistä tällä hallituksella ja aivan erityi
      Maailman menoa
      246
      1468
    8. Sofia servasi Pikku-Villen suvereenisti

      – Ihanko tosissaan tuleva sosiaali- ja terveysministeri hyökkää oppositiopuolueen puheenjohtajaa vastaan siksi, että täm
      Maailman menoa
      11
      1305
    9. Harmi, etten koskaan saa tietää

      Olinko vai olenko sun kaivattusi, Jii…
      Ikävä
      120
      1105
    10. viikonloppu lähestyy

      ja tiiän sen jo valmiiks et en pysty olee selvinpäin. oisitpa kieltämässä ja rauhoittamassa minua. en tiedä olisiko sinu
      Ikävä
      19
      1089
    Aihe