Miks merkkijono-jutut on aina niin hankalia?
pitis seuraavas saada jokaisen sanan 2.kirjain muutettua $-merkiksi. mulla vain eka sanassa muuttaa. eli mikäs täs auttas? (välilyönnin huomiointi?)
-mitä EROO on:
-jos käyttää char-merkkijonolle taulukkoa
-taikka sitten string-tyyppiä??? (string teksti)
char teksti[Koko]; while (teksti[i] != '\0') { if(teksti[i]) teksti[i,1]='$'; i++; }
itte käytän merkkijonoihin taulukkoa ku se on yksinkertasempi (ehkä)
ton pitäs toimia jotenki
char teksti[koko]; int count = 0; // eli muutetaan jokaisen sanan toinen merkki $ -merkiksi for(int i=0; i<koko; i++) { count++; if(teksti[i] == 32) // ascii -välilyönti count = 0; if(count == 2) teksti[i] = '$'; }
thanks jees sehä vaan toimi!!! (vaik meinasin epäillä et ku ei lopetus ehtona...\0 ..vaan oisko tuo sama ku koko-ehto,eli niin kauan kun ei tyhjää eli esim. 80 riviä, oletus enter..) -kyl noit merkkijono-jutskia yritin öpiskellä eli luin stringistä ja replacesta ym.
lainaus:
-mitä EROO on:
-jos käyttää char-merkkijonolle taulukkoa
-taikka sitten string-tyyppiä??? (string teksti)
std::string on luonnollisesti turvallisempi, char-merkkijonot ovat kuitenkin vain tavallisia taulukoita, joten puhveli ylivirtaukset (buffer overflow) ovat yleisiä jos soodaaja ei osaa hommiaan.
kyl täs soodat ja soosit menee ..iha iiks! niin tarkoitatko että siis taulukoissa käytetään null-merkkiin päättyviä talletuksia eli onks nyt sitte tuo '\0'? sitä ei tos for-silmus ole..ja en iha tajuu ku vertaa ylempään while-silmuun!
ja pitääks taulukois varata tila null-merkille?(vai onko tämä jo osoitin-asiaa.. huuh!)
-ja sit stringissäkö ei tarvitse huolehtia null-merkistä ollenkaa? sen tiiän(?) että stringis ei turhaa jää alkioita käyttämättä. =)
Muistin voi varata dynaamisesti allocilla tai vastaavalla ja vapauttaa deletellä.
näinkö?
size_t size = 100; char* buffer = new char[size]; delete[] buffer;
No perjaatteessa vaikka noin, mutta jos ihan dynaamiseksi halutaan niin tarkistetaan tallennettavan stringin pituus ennen taulukkoon tunkemista ja varataan täsmälleen sen verran tilaa kuin stringi vaatii.
Aihe on jo aika vanha, joten et voi enää vastata siihen.