Tehtävä: Tee osoittimia käyttävä toteutus funktiolle int mjpit(char *mj); joka palauttaa mj:n pituuden.
Olen tehnyt seuraavan ohjelman:
#include
int mjpit(char *mj)
{
int koko=0;
for(koko=0; mj[koko]!='\0'; koko ); // etsii loppumismerkin
return koko;
}
int main(void)
{
char MerkkiJono[]="tässäonkolmekymmentäkaksimerkkiä";
int koko;
koko = mjpit(MerkkiJono);
printf("Merkkijonon pituus on %d merkkiä\n",koko);
return 0;
}
Tämä ohjelma palauttaa kyllä merkkijonon pituuden, mutta miten tätä täytyisi muuttaa jos sen haluaisi tehdä osoittimilla?!
Muutkin tehtävät ovat helppoja tehdä mutta en tajua alkuunkaan miten ne tehdään osoittimien avulla?!
2) char *skandi(char *mj); joka muuttaa mj:n skandinaaviset merkit vastaaviksi merkeiksi o,a,O,A. Funktio arvonaan muutetun merkkijonon.
3) char *ptakap(char *mj); joka kääntää mj:n sisällön takaperin kirjoitetuksi. Funktio arvonaan muutetun merkkijonon.
Apua osoittimiin
2
390
Vastaukset
- hemmoit
c- kielestä on aikaa mutta eiköhän näillä pääse alkuun.
1.
itseasiassa ratkaisusi on ok...
mj[koko]!='\0'
voidaan esitää vaikka näin (pointer arithmetic)
*(mj koko) != '\0'
tässä toinen
for(koko=0; *mj!='\0'; koko , mj );
2. Jos input stringiä saa muokata niin
for(koko=0; *mj!='\0'; koko , mj )
{
switch(*mj) {
case 'ä': *mj = 'a'; /* käytä heksa koodia ?*/
....
}
}
3.
http://discuss.fogcreek.com/techinterview/default.asp?cmd=show&ixPost=2077 - Torak
Otetaan vaikka toi 1 tehtävä.
int mjpit(char *mj)
{
char *p;
for(p=mj; *p; p );
return (p-mj);
}
1 rivi esitellään osoitin p.
2 vähän epäselvä for silmukka mutta:
p arvoksi asetetaan mj eli alkaa alusta.
Testataan onko p tosi. Eli != 0.
Siirretään p osoitinta yhtä muisti paikkaa eteenpäin, eli . Silmukan lopussa on ; kuvaamassa tyhjää lausetta, sen takia että enempää ei tarvitse silmukassa tehdä.
Eli nyt on osoitin p joka osoittaa merkkijonon loppuun ja mj joka osoittaa jonon alkuun. Tehdään vähennyslasku ja saadaan merkkijonon pituus. Ei eroa ei ole kovin paljoa.
2 tehtävään: if(*p == 'ä') *p = 'a';
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Ja taas ammuttu kokkolassa
Kokkolaisilta pitäisi kerätä pois kaikki ampumaset, keittiöveitset ja kaikki mikä vähänkään paukku ja on terävä.716147- 1335494
Helena Koivu on äiti
Mitä hyötyä on Mikko Koivulla kohdella LASTENSA äitiä huonosti . Vie lapset tutuista ympyröistä pois . Lasten kodista.4643386Ovatko naiset lopettaneet sen vähäisenkin vaivannäön Tinderissa?
Meinaan vaan profiileja selatessa nykyään valtaosalla ei ole minkäänlaista kirjoitettua tekstiä siellä. Juuri ja juuri s1091757Suomi vietiin Natoon väärin perustein. Viides artikla on hölynpölyä. Yksin jäämme.
Kuka vielä uskoo, että viides artikla takaa Suomelle avun, jos Suomeen hyökätään. Liikuttavasti täällä on uskottu ja ved3771271- 341175
- 671071
Sydämeni on sinun luona
Koko ajan. Oli ympärilläni ketä oli niin sinä olet vain ajatuksissa ja tunteissa. En halua muiden kosketusta kuin sinun46956Trump ja Venäjä
Huomasitteko muuten... Käytännössä ainoat valtiot, joille Trump EI eilen asettanut typeriä tariffejaan, olivat Venäjä ja110922Jatkuva stressitila
On sinun vuoksesi kun en tiedä missä mennään mutta tunteeni tiedän ainoastaan52889