Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C: String merkkijono pituus

Sivun loppuun

tomaattigeeni [08.10.2002 11:06:54]

#

int StringPituus(string(joo))
{
  int a=0;
  while(joo[a] != '\0') a++;
  return a;
}

tomageeni [09.10.2002 20:32:15]

#

..ja kieli oli c++ jonka koodista näkeekin

(nimetön) [09.10.2002 21:48:13]

#

kyllähän tuo function olisi paljon kätevämpi, jos se ottaisi parametriksi string:in, ja palauttaisi pituuden, mutta tuosta varmaan kaikki älyää idean.

tomageeni [09.10.2002 23:03:36]

#

aivan, tuota voi käyttää näinkin:

void StringPituus(string joo)
{

  int times = 0;
  int a = 0;
  while(joo[a] != '\0')
  {
    a = a + 1;
    times = times + 1;
  }
  return times;
}

ja sitten kutsuu main() funktiosta antamalla parametrit, tuota ruuvari kai tarkoitti

Hipo [09.10.2002 23:13:27]

#

Njoo. Se on kai ihan vaan string ja iostream, eli ei siis .h:ta loppuun.

Ton a:n nimi vois olla joku kertovampi, kuten length. Ja times on hyödytön koska se on aina sama kuin a. Näin ollen:

while(joo[length] != '\0') { length++; }

progo [10.10.2002 14:10:34]

#

Tota noin..

Koska c++:ssa on samanlainen, nimenomaan tuossa stringi-luokassa oleva length()-metodi, tuo koodi on vain opetuskäyttöön (eikös se length() ole optimoitukin paremmin)

progo [10.10.2002 14:13:52]

#

Öh.. taisin selitää vähän poskelleen.. siis string-olion length()-metodi palauttaa stringin pituuden, esim:

int pituus = joo.length();

thefox [10.10.2002 14:53:50]

#

Niin ja arvoja ei sitten returnilla palauteta jos funktion tyyppi on void.

(nimetön) [10.10.2002 15:04:11]

#

...ja string ei lopu mihinkään \0 -merkkiin

tomageeni [10.10.2002 15:39:24]

#

???: \O on käsittääkseni NULL merkki, eli 'ei mikään', joka tapauksessa tuo toimii.

fawkz, tuo jäi multa huomaamatta :P

proguru: kyllä sielä on toi lenght() funktio, kunhan huvikseni kirjotin ton.

Hipo [10.10.2002 16:17:05]

#

Itseasiassa merkkijonon lopetus on nimenomaan '\0', joka tosin useimmissa kääntäjissä on 0. Vähän sama kuin NULL, joka tarkottaa tyhjää pointteria, joka on lähes aina 0, mutta NULLia pitäis käyttää.

anttipanda [08.12.2004 14:54:26]

#

huoh, testatkaa edes että kääntyykö nuo koodit ja että onko niiden teossa yleensäkään mitään järkeä ennenkuin lähetätte... Ja mitä on nuo bling-joo-pörtsäscheisse -tunnisteet?

<ohjelmalle täytyy olla jokin oikeutus ennenkuin sen vaivautuu kirjoittamaan>

tomaattigeeni [08.12.2004 17:20:04]

#

anttipanda on hyvä ja yrittää ymmärtää että softa ei käänny jos siinä ei ole main-funktiota, tuo ei olekaan valmis ohjelma. Funktio pitää tunkea johonkin ohjelmaan josta sitä voi hyödyntää. bling on muuttujanimi kuten kukin vähänkin C-tyylisiä kieliä hallitseva ymmärtää. Kiitos rakentavasta kommentista ;)

Lumi-ukkeli [17.12.2007 21:43:39]

#

saanko vastata et MITÄ VITTUA?????

// string::length
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str ("Test string");
  cout << "The length of str is " << str.length() << " characters.\n";
  return 0;
}

Teuro [06.03.2008 17:39:28]

#

Vastaan vasta nyt, mutta kokeilepa huviksesi kääntää tämä tässä on kyllä main funktio, mutta eipä käänny ilman puukottamista. Anttipanda tarkoitti luultavasti, että annat bling muuttujan funktiolle parametrinä, mutta käytät joo muuttujaa, jota ei ole esitelty.

#include <iostream>

using namespace std;

int StringPituus(string(bling))
{
  int a=0;
  while(joo[a] != '\0') a++;
  return a;
}

int main(){
  string uusi = "pete";

  cout << StringPituus(uusi) << endl;
  return 0;
}

tomaattigeeni [10.03.2008 01:03:07]

#

Olet oikeassa tuossa.

Mutta varsinaisesti mua ei kiinnosta toimivatko mun kuusi vuotta sitten koodaamani harjoituspelleillyni. :)
Olisi ehkä aiheellista poistaa tämä. Eihän tästä kellekään mitään hyötyä ole. Mutta mielestäni on ihan hyvää harjoitusta koodailla tällaisia juttuja vaikka standardikirjastoista löytyy valmiitkin metodit tuohon.

edit. ja korjasin tuon tuohon "koodivinkkiinkin" - erikoista sinänsä että kyseinen vinkki on täällä yli viisi vuotta selvinnyt eikä tuosta aiemmin ole huomautettu ;)


Sivun alkuun

Vastaus

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

Tietoa sivustosta