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

383

    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. Nurmossa kuoli 2 Lasta..

      Autokolarissa. Näin kertovat iltapäivälehdet juuri nyt. 22.11. Ja aina ennen Joulua näitä tulee. . .
      Seinäjoki
      180
      10500
    2. Joel Harkimo seuraa Martina Aitolehden jalanjälkiä!

      Oho, aikamoinen yllätys, että Joel Jolle Harkimo on lähtenyt Iholla-ohjelmaan. Tässähän hän seuraa mm. Martina Aitolehde
      Suomalaiset julkkikset
      52
      3615
    3. Kaksi lasta kuoli kolarissa Seinäjoella. Tutkitaan rikoksena

      Henkilöautossa matkustaneet kaksi lasta ovat kuolleet kolarissa Seinäjoella. Kolmas lapsi on vakasti loukkaantunut ja
      Maailman menoa
      54
      3381
    4. Et olisi piilossa enää

      Vaan tulisit esiin.
      Ikävä
      64
      2895
    5. Miksi pankkitunnuksilla kaikkialle

      Miksi rahaliikenteen palveluiden tunnukset vaaditaan miltei kaikkeen yleiseen asiointiin Suomessa? Kenen etu on se, että
      Maailman menoa
      221
      2281
    6. Miten meinasit

      Suhtautua minuun kun taas kohdataan?
      Ikävä
      116
      2223
    7. Sinä saat minut kuohuksiin

      Pitäisiköhän meidän naida? Mielestäni pitäisi . Tämä värinä ja jännite meidän välillä alkaa olla sietämätöntä. Haluai
      Tunteet
      25
      2053
    8. Minä en ala kenenkään perässä juoksemaan

      Voin jopa rakastaa sinua ja kääntää silti tunteeni pois. Tunteetkin hälvenevät aikanaan, poissa silmistä poissa mielestä
      Ikävä
      67
      1658
    9. Loukkaantunut lapsi on yhä kriittisessä tilassa

      Seinäjoella Pohjan valtatiellä perjantaina sattuneessa liikenneonnettomuudessa loukkaantunut lapsi on yhä kriittisessä t
      Kauhava
      22
      1486
    10. Tunnekylmä olet

      En ole tyytyväinen käytökseesi et osannut kommunikoida. Se on huono piirre ihmisessä että ei osaa katua aiheuttamaansa p
      Ikävä
      112
      1396
    Aihe